minecraft-renderer 0.1.60 → 0.1.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8039,7 +8039,7 @@ void main() {
8039
8039
  squared_mean = squared_mean / samples;
8040
8040
  float std_dev = sqrt( squared_mean - mean * mean );
8041
8041
  gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
8042
- }`;function bze(i,e,t){let n=new E_,r=new Qt,s=new Qt,o=new kr,a=new YM({depthPacking:wNe}),l=new JM,c={},d=t.maxTextureSize,u={[Xs]:wi,[wi]:Xs,[Yi]:Yi},p=new Qa({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Qt},radius:{value:4}},vertexShader:_ze,fragmentShader:yze}),v=p.clone();v.defines.HORIZONTAL_PASS=1;let _=new ad;_.setAttribute("position",new ps(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let b=new hn(_,p),y=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=ume;let g=this.type;this.render=function(A,I,R){if(y.enabled===!1||y.autoUpdate===!1&&y.needsUpdate===!1||A.length===0)return;let L=i.getRenderTarget(),M=i.getActiveCubeFace(),k=i.getActiveMipmapLevel(),F=i.state;F.setBlending(w0),F.buffers.color.setClear(1,1,1,1),F.buffers.depth.setTest(!0),F.setScissorTest(!1);let Z=g!==Xa&&this.type===Xa,D=g===Xa&&this.type!==Xa;for(let z=0,Y=A.length;z<Y;z++){let le=A[z],te=le.shadow;if(te===void 0){console.warn("THREE.WebGLShadowMap:",le,"has no shadow.");continue}if(te.autoUpdate===!1&&te.needsUpdate===!1)continue;r.copy(te.mapSize);let re=te.getFrameExtents();if(r.multiply(re),s.copy(te.mapSize),(r.x>d||r.y>d)&&(r.x>d&&(s.x=Math.floor(d/re.x),r.x=s.x*re.x,te.mapSize.x=s.x),r.y>d&&(s.y=Math.floor(d/re.y),r.y=s.y*re.y,te.mapSize.y=s.y)),te.map===null||Z===!0||D===!0){let j=this.type!==Xa?{minFilter:ai,magFilter:ai}:{};te.map!==null&&te.map.dispose(),te.map=new Za(r.x,r.y,j),te.map.texture.name=le.name+".shadowMap",te.camera.updateProjectionMatrix()}i.setRenderTarget(te.map),i.clear();let ae=te.getViewportCount();for(let j=0;j<ae;j++){let U=te.getViewport(j);o.set(s.x*U.x,s.y*U.y,s.x*U.z,s.y*U.w),F.viewport(o),te.updateMatrices(le,j),n=te.getFrustum(),S(I,R,te.camera,le,this.type)}te.isPointLightShadow!==!0&&this.type===Xa&&w(te,R),te.needsUpdate=!1}g=this.type,y.needsUpdate=!1,i.setRenderTarget(L,M,k)};function w(A,I){let R=e.update(b);p.defines.VSM_SAMPLES!==A.blurSamples&&(p.defines.VSM_SAMPLES=A.blurSamples,v.defines.VSM_SAMPLES=A.blurSamples,p.needsUpdate=!0,v.needsUpdate=!0),A.mapPass===null&&(A.mapPass=new Za(r.x,r.y)),p.uniforms.shadow_pass.value=A.map.texture,p.uniforms.resolution.value=A.mapSize,p.uniforms.radius.value=A.radius,i.setRenderTarget(A.mapPass),i.clear(),i.renderBufferDirect(I,null,R,p,b,null),v.uniforms.shadow_pass.value=A.mapPass.texture,v.uniforms.resolution.value=A.mapSize,v.uniforms.radius.value=A.radius,i.setRenderTarget(A.map),i.clear(),i.renderBufferDirect(I,null,R,v,b,null)}function x(A,I,R,L){let M=null,k=R.isPointLight===!0?A.customDistanceMaterial:A.customDepthMaterial;if(k!==void 0)M=k;else if(M=R.isPointLight===!0?l:a,i.localClippingEnabled&&I.clipShadows===!0&&Array.isArray(I.clippingPlanes)&&I.clippingPlanes.length!==0||I.displacementMap&&I.displacementScale!==0||I.alphaMap&&I.alphaTest>0||I.map&&I.alphaTest>0){let F=M.uuid,Z=I.uuid,D=c[F];D===void 0&&(D={},c[F]=D);let z=D[Z];z===void 0&&(z=M.clone(),D[Z]=z),M=z}if(M.visible=I.visible,M.wireframe=I.wireframe,L===Xa?M.side=I.shadowSide!==null?I.shadowSide:I.side:M.side=I.shadowSide!==null?I.shadowSide:u[I.side],M.alphaMap=I.alphaMap,M.alphaTest=I.alphaTest,M.map=I.map,M.clipShadows=I.clipShadows,M.clippingPlanes=I.clippingPlanes,M.clipIntersection=I.clipIntersection,M.displacementMap=I.displacementMap,M.displacementScale=I.displacementScale,M.displacementBias=I.displacementBias,M.wireframeLinewidth=I.wireframeLinewidth,M.linewidth=I.linewidth,R.isPointLight===!0&&M.isMeshDistanceMaterial===!0){let F=i.properties.get(M);F.light=R}return M}function S(A,I,R,L,M){if(A.visible===!1)return;if(A.layers.test(I.layers)&&(A.isMesh||A.isLine||A.isPoints)&&(A.castShadow||A.receiveShadow&&M===Xa)&&(!A.frustumCulled||n.intersectsObject(A))){A.modelViewMatrix.multiplyMatrices(R.matrixWorldInverse,A.matrixWorld);let Z=e.update(A),D=A.material;if(Array.isArray(D)){let z=Z.groups;for(let Y=0,le=z.length;Y<le;Y++){let te=z[Y],re=D[te.materialIndex];if(re&&re.visible){let ae=x(A,re,L,M);i.renderBufferDirect(R,null,Z,ae,A,te)}}}else if(D.visible){let z=x(A,D,L,M);i.renderBufferDirect(R,null,Z,z,A,null)}}let F=A.children;for(let Z=0,D=F.length;Z<D;Z++)S(F[Z],I,R,L,M)}}function xze(i,e,t){let n=t.isWebGL2;function r(){let $=!1,Pe=new kr,ue=null,Ee=new kr(0,0,0,0);return{setMask:function(Ce){ue!==Ce&&!$&&(i.colorMask(Ce,Ce,Ce,Ce),ue=Ce)},setLocked:function(Ce){$=Ce},setClear:function(Ce,ot,pt,Tt,In){In===!0&&(Ce*=Tt,ot*=Tt,pt*=Tt),Pe.set(Ce,ot,pt,Tt),Ee.equals(Pe)===!1&&(i.clearColor(Ce,ot,pt,Tt),Ee.copy(Pe))},reset:function(){$=!1,ue=null,Ee.set(-1,0,0,0)}}}function s(){let $=!1,Pe=null,ue=null,Ee=null;return{setTest:function(Ce){Ce?oe(i.DEPTH_TEST):me(i.DEPTH_TEST)},setMask:function(Ce){Pe!==Ce&&!$&&(i.depthMask(Ce),Pe=Ce)},setFunc:function(Ce){if(ue!==Ce){switch(Ce){case KOe:i.depthFunc(i.NEVER);break;case ZOe:i.depthFunc(i.ALWAYS);break;case QOe:i.depthFunc(i.LESS);break;case TM:i.depthFunc(i.LEQUAL);break;case eNe:i.depthFunc(i.EQUAL);break;case tNe:i.depthFunc(i.GEQUAL);break;case nNe:i.depthFunc(i.GREATER);break;case rNe:i.depthFunc(i.NOTEQUAL);break;default:i.depthFunc(i.LEQUAL)}ue=Ce}},setLocked:function(Ce){$=Ce},setClear:function(Ce){Ee!==Ce&&(i.clearDepth(Ce),Ee=Ce)},reset:function(){$=!1,Pe=null,ue=null,Ee=null}}}function o(){let $=!1,Pe=null,ue=null,Ee=null,Ce=null,ot=null,pt=null,Tt=null,In=null;return{setTest:function(mt){$||(mt?oe(i.STENCIL_TEST):me(i.STENCIL_TEST))},setMask:function(mt){Pe!==mt&&!$&&(i.stencilMask(mt),Pe=mt)},setFunc:function(mt,Rn,Xt){(ue!==mt||Ee!==Rn||Ce!==Xt)&&(i.stencilFunc(mt,Rn,Xt),ue=mt,Ee=Rn,Ce=Xt)},setOp:function(mt,Rn,Xt){(ot!==mt||pt!==Rn||Tt!==Xt)&&(i.stencilOp(mt,Rn,Xt),ot=mt,pt=Rn,Tt=Xt)},setLocked:function(mt){$=mt},setClear:function(mt){In!==mt&&(i.clearStencil(mt),In=mt)},reset:function(){$=!1,Pe=null,ue=null,Ee=null,Ce=null,ot=null,pt=null,Tt=null,In=null}}}let a=new r,l=new s,c=new o,d=new WeakMap,u=new WeakMap,p={},v={},_=new WeakMap,b=[],y=null,g=!1,w=null,x=null,S=null,A=null,I=null,R=null,L=null,M=!1,k=null,F=null,Z=null,D=null,z=null,Y=i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS),le=!1,te=0,re=i.getParameter(i.VERSION);re.indexOf("WebGL")!==-1?(te=parseFloat(/^WebGL (\d)/.exec(re)[1]),le=te>=1):re.indexOf("OpenGL ES")!==-1&&(te=parseFloat(/^OpenGL ES (\d)/.exec(re)[1]),le=te>=2);let ae=null,j={},U=i.getParameter(i.SCISSOR_BOX),V=i.getParameter(i.VIEWPORT),J=new kr().fromArray(U),ee=new kr().fromArray(V);function Q($,Pe,ue,Ee){let Ce=new Uint8Array(4),ot=i.createTexture();i.bindTexture($,ot),i.texParameteri($,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri($,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let pt=0;pt<ue;pt++)n&&($===i.TEXTURE_3D||$===i.TEXTURE_2D_ARRAY)?i.texImage3D(Pe,0,i.RGBA,1,1,Ee,0,i.RGBA,i.UNSIGNED_BYTE,Ce):i.texImage2D(Pe+pt,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,Ce);return ot}let se={};se[i.TEXTURE_2D]=Q(i.TEXTURE_2D,i.TEXTURE_2D,1),se[i.TEXTURE_CUBE_MAP]=Q(i.TEXTURE_CUBE_MAP,i.TEXTURE_CUBE_MAP_POSITIVE_X,6),n&&(se[i.TEXTURE_2D_ARRAY]=Q(i.TEXTURE_2D_ARRAY,i.TEXTURE_2D_ARRAY,1,1),se[i.TEXTURE_3D]=Q(i.TEXTURE_3D,i.TEXTURE_3D,1,1)),a.setClear(0,0,0,1),l.setClear(1),c.setClear(0),oe(i.DEPTH_TEST),l.setFunc(TM),we(!1),$e(jhe),oe(i.CULL_FACE),ve(w0);function oe($){p[$]!==!0&&(i.enable($),p[$]=!0)}function me($){p[$]!==!1&&(i.disable($),p[$]=!1)}function _e($,Pe){return v[$]!==Pe?(i.bindFramebuffer($,Pe),v[$]=Pe,n&&($===i.DRAW_FRAMEBUFFER&&(v[i.FRAMEBUFFER]=Pe),$===i.FRAMEBUFFER&&(v[i.DRAW_FRAMEBUFFER]=Pe)),!0):!1}function xe($,Pe){let ue=b,Ee=!1;if($)if(ue=_.get(Pe),ue===void 0&&(ue=[],_.set(Pe,ue)),$.isWebGLMultipleRenderTargets){let Ce=$.texture;if(ue.length!==Ce.length||ue[0]!==i.COLOR_ATTACHMENT0){for(let ot=0,pt=Ce.length;ot<pt;ot++)ue[ot]=i.COLOR_ATTACHMENT0+ot;ue.length=Ce.length,Ee=!0}}else ue[0]!==i.COLOR_ATTACHMENT0&&(ue[0]=i.COLOR_ATTACHMENT0,Ee=!0);else ue[0]!==i.BACK&&(ue[0]=i.BACK,Ee=!0);Ee&&(t.isWebGL2?i.drawBuffers(ue):e.get("WEBGL_draw_buffers").drawBuffersWEBGL(ue))}function ye($){return y!==$?(i.useProgram($),y=$,!0):!1}let W={[O1]:i.FUNC_ADD,[FOe]:i.FUNC_SUBTRACT,[zOe]:i.FUNC_REVERSE_SUBTRACT};if(n)W[Jhe]=i.MIN,W[Khe]=i.MAX;else{let $=e.get("EXT_blend_minmax");$!==null&&(W[Jhe]=$.MIN_EXT,W[Khe]=$.MAX_EXT)}let ke={[HOe]:i.ZERO,[qOe]:i.ONE,[GOe]:i.SRC_COLOR,[fme]:i.SRC_ALPHA,[JOe]:i.SRC_ALPHA_SATURATE,[XOe]:i.DST_COLOR,[jOe]:i.DST_ALPHA,[WOe]:i.ONE_MINUS_SRC_COLOR,[hme]:i.ONE_MINUS_SRC_ALPHA,[YOe]:i.ONE_MINUS_DST_COLOR,[$Oe]:i.ONE_MINUS_DST_ALPHA};function ve($,Pe,ue,Ee,Ce,ot,pt,Tt){if($===w0){g===!0&&(me(i.BLEND),g=!1);return}if(g===!1&&(oe(i.BLEND),g=!0),$!==VOe){if($!==w||Tt!==M){if((x!==O1||I!==O1)&&(i.blendEquation(i.FUNC_ADD),x=O1,I=O1),Tt)switch($){case U1:i.blendFuncSeparate(i.ONE,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case $he:i.blendFunc(i.ONE,i.ONE);break;case Xhe:i.blendFuncSeparate(i.ZERO,i.ONE_MINUS_SRC_COLOR,i.ZERO,i.ONE);break;case Yhe:i.blendFuncSeparate(i.ZERO,i.SRC_COLOR,i.ZERO,i.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",$);break}else switch($){case U1:i.blendFuncSeparate(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case $he:i.blendFunc(i.SRC_ALPHA,i.ONE);break;case Xhe:i.blendFuncSeparate(i.ZERO,i.ONE_MINUS_SRC_COLOR,i.ZERO,i.ONE);break;case Yhe:i.blendFunc(i.ZERO,i.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",$);break}S=null,A=null,R=null,L=null,w=$,M=Tt}return}Ce=Ce||Pe,ot=ot||ue,pt=pt||Ee,(Pe!==x||Ce!==I)&&(i.blendEquationSeparate(W[Pe],W[Ce]),x=Pe,I=Ce),(ue!==S||Ee!==A||ot!==R||pt!==L)&&(i.blendFuncSeparate(ke[ue],ke[Ee],ke[ot],ke[pt]),S=ue,A=Ee,R=ot,L=pt),w=$,M=!1}function Ae($,Pe){$.side===Yi?me(i.CULL_FACE):oe(i.CULL_FACE);let ue=$.side===wi;Pe&&(ue=!ue),we(ue),$.blending===U1&&$.transparent===!1?ve(w0):ve($.blending,$.blendEquation,$.blendSrc,$.blendDst,$.blendEquationAlpha,$.blendSrcAlpha,$.blendDstAlpha,$.premultipliedAlpha),l.setFunc($.depthFunc),l.setTest($.depthTest),l.setMask($.depthWrite),a.setMask($.colorWrite);let Ee=$.stencilWrite;c.setTest(Ee),Ee&&(c.setMask($.stencilWriteMask),c.setFunc($.stencilFunc,$.stencilRef,$.stencilFuncMask),c.setOp($.stencilFail,$.stencilZFail,$.stencilZPass)),Oe($.polygonOffset,$.polygonOffsetFactor,$.polygonOffsetUnits),$.alphaToCoverage===!0?oe(i.SAMPLE_ALPHA_TO_COVERAGE):me(i.SAMPLE_ALPHA_TO_COVERAGE)}function we($){k!==$&&($?i.frontFace(i.CW):i.frontFace(i.CCW),k=$)}function $e($){$!==NOe?(oe(i.CULL_FACE),$!==F&&($===jhe?i.cullFace(i.BACK):$===DOe?i.cullFace(i.FRONT):i.cullFace(i.FRONT_AND_BACK))):me(i.CULL_FACE),F=$}function pe($){$!==Z&&(le&&i.lineWidth($),Z=$)}function Oe($,Pe,ue){$?(oe(i.POLYGON_OFFSET_FILL),(D!==Pe||z!==ue)&&(i.polygonOffset(Pe,ue),D=Pe,z=ue)):me(i.POLYGON_OFFSET_FILL)}function Ge($){$?oe(i.SCISSOR_TEST):me(i.SCISSOR_TEST)}function Xe($){$===void 0&&($=i.TEXTURE0+Y-1),ae!==$&&(i.activeTexture($),ae=$)}function tt($,Pe,ue){ue===void 0&&(ae===null?ue=i.TEXTURE0+Y-1:ue=ae);let Ee=j[ue];Ee===void 0&&(Ee={type:void 0,texture:void 0},j[ue]=Ee),(Ee.type!==$||Ee.texture!==Pe)&&(ae!==ue&&(i.activeTexture(ue),ae=ue),i.bindTexture($,Pe||se[$]),Ee.type=$,Ee.texture=Pe)}function N(){let $=j[ae];$!==void 0&&$.type!==void 0&&(i.bindTexture($.type,null),$.type=void 0,$.texture=void 0)}function C(){try{i.compressedTexImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function q(){try{i.compressedTexImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function B(){try{i.texSubImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function T(){try{i.texSubImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function P(){try{i.compressedTexSubImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function G(){try{i.compressedTexSubImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function X(){try{i.texStorage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function H(){try{i.texStorage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function he(){try{i.texImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function Me(){try{i.texImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function Le($){J.equals($)===!1&&(i.scissor($.x,$.y,$.z,$.w),J.copy($))}function Te($){ee.equals($)===!1&&(i.viewport($.x,$.y,$.z,$.w),ee.copy($))}function Se($,Pe){let ue=u.get(Pe);ue===void 0&&(ue=new WeakMap,u.set(Pe,ue));let Ee=ue.get($);Ee===void 0&&(Ee=i.getUniformBlockIndex(Pe,$.name),ue.set($,Ee))}function He($,Pe){let Ee=u.get(Pe).get($);d.get(Pe)!==Ee&&(i.uniformBlockBinding(Pe,Ee,$.__bindingPointIndex),d.set(Pe,Ee))}function lt(){i.disable(i.BLEND),i.disable(i.CULL_FACE),i.disable(i.DEPTH_TEST),i.disable(i.POLYGON_OFFSET_FILL),i.disable(i.SCISSOR_TEST),i.disable(i.STENCIL_TEST),i.disable(i.SAMPLE_ALPHA_TO_COVERAGE),i.blendEquation(i.FUNC_ADD),i.blendFunc(i.ONE,i.ZERO),i.blendFuncSeparate(i.ONE,i.ZERO,i.ONE,i.ZERO),i.colorMask(!0,!0,!0,!0),i.clearColor(0,0,0,0),i.depthMask(!0),i.depthFunc(i.LESS),i.clearDepth(1),i.stencilMask(4294967295),i.stencilFunc(i.ALWAYS,0,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.KEEP),i.clearStencil(0),i.cullFace(i.BACK),i.frontFace(i.CCW),i.polygonOffset(0,0),i.activeTexture(i.TEXTURE0),i.bindFramebuffer(i.FRAMEBUFFER,null),n===!0&&(i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,null)),i.useProgram(null),i.lineWidth(1),i.scissor(0,0,i.canvas.width,i.canvas.height),i.viewport(0,0,i.canvas.width,i.canvas.height),p={},ae=null,j={},v={},_=new WeakMap,b=[],y=null,g=!1,w=null,x=null,S=null,A=null,I=null,R=null,L=null,M=!1,k=null,F=null,Z=null,D=null,z=null,J.set(0,0,i.canvas.width,i.canvas.height),ee.set(0,0,i.canvas.width,i.canvas.height),a.reset(),l.reset(),c.reset()}return{buffers:{color:a,depth:l,stencil:c},enable:oe,disable:me,bindFramebuffer:_e,drawBuffers:xe,useProgram:ye,setBlending:ve,setMaterial:Ae,setFlipSided:we,setCullFace:$e,setLineWidth:pe,setPolygonOffset:Oe,setScissorTest:Ge,activeTexture:Xe,bindTexture:tt,unbindTexture:N,compressedTexImage2D:C,compressedTexImage3D:q,texImage2D:he,texImage3D:Me,updateUBOMapping:Se,uniformBlockBinding:He,texStorage2D:X,texStorage3D:H,texSubImage2D:B,texSubImage3D:T,compressedTexSubImage2D:P,compressedTexSubImage3D:G,scissor:Le,viewport:Te,reset:lt}}function wze(i,e,t,n,r,s,o){let a=r.isWebGL2,l=r.maxTextures,c=r.maxCubemapSize,d=r.maxTextureSize,u=r.maxSamples,p=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,v=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),_=new WeakMap,b,y=new WeakMap,g=!1;try{g=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function w(N,C){return g?new OffscreenCanvas(N,C):h_("canvas")}function x(N,C,q,B){let T=1;if((N.width>B||N.height>B)&&(T=B/Math.max(N.width,N.height)),T<1||C===!0)if(typeof HTMLImageElement<"u"&&N instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&N instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&N instanceof ImageBitmap){let P=C?OM:Math.floor,G=P(T*N.width),X=P(T*N.height);b===void 0&&(b=w(G,X));let H=q?w(G,X):b;return H.width=G,H.height=X,H.getContext("2d").drawImage(N,0,0,G,X),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+N.width+"x"+N.height+") to ("+G+"x"+X+")."),H}else return"data"in N&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+N.width+"x"+N.height+")."),N;return N}function S(N){return I5e(N.width)&&I5e(N.height)}function A(N){return a?!1:N.wrapS!==js||N.wrapT!==js||N.minFilter!==ai&&N.minFilter!==ms}function I(N,C){return N.generateMipmaps&&C&&N.minFilter!==ai&&N.minFilter!==ms}function R(N){i.generateMipmap(N)}function L(N,C,q,B,T=!1){if(a===!1)return C;if(N!==null){if(i[N]!==void 0)return i[N];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+N+"'")}let P=C;return C===i.RED&&(q===i.FLOAT&&(P=i.R32F),q===i.HALF_FLOAT&&(P=i.R16F),q===i.UNSIGNED_BYTE&&(P=i.R8)),C===i.RED_INTEGER&&(q===i.UNSIGNED_BYTE&&(P=i.R8UI),q===i.UNSIGNED_SHORT&&(P=i.R16UI),q===i.UNSIGNED_INT&&(P=i.R32UI),q===i.BYTE&&(P=i.R8I),q===i.SHORT&&(P=i.R16I),q===i.INT&&(P=i.R32I)),C===i.RG&&(q===i.FLOAT&&(P=i.RG32F),q===i.HALF_FLOAT&&(P=i.RG16F),q===i.UNSIGNED_BYTE&&(P=i.RG8)),C===i.RGBA&&(q===i.FLOAT&&(P=i.RGBA32F),q===i.HALF_FLOAT&&(P=i.RGBA16F),q===i.UNSIGNED_BYTE&&(P=B===Mn&&T===!1?i.SRGB8_ALPHA8:i.RGBA8),q===i.UNSIGNED_SHORT_4_4_4_4&&(P=i.RGBA4),q===i.UNSIGNED_SHORT_5_5_5_1&&(P=i.RGB5_A1)),(P===i.R16F||P===i.R32F||P===i.RG16F||P===i.RG32F||P===i.RGBA16F||P===i.RGBA32F)&&e.get("EXT_color_buffer_float"),P}function M(N,C,q){return I(N,q)===!0||N.isFramebufferTexture&&N.minFilter!==ai&&N.minFilter!==ms?Math.log2(Math.max(C.width,C.height))+1:N.mipmaps!==void 0&&N.mipmaps.length>0?N.mipmaps.length:N.isCompressedTexture&&Array.isArray(N.image)?C.mipmaps.length:1}function k(N){return N===ai||N===Zhe||N===ZA?i.NEAREST:i.LINEAR}function F(N){let C=N.target;C.removeEventListener("dispose",F),D(C),C.isVideoTexture&&_.delete(C)}function Z(N){let C=N.target;C.removeEventListener("dispose",Z),Y(C)}function D(N){let C=n.get(N);if(C.__webglInit===void 0)return;let q=N.source,B=y.get(q);if(B){let T=B[C.__cacheKey];T.usedTimes--,T.usedTimes===0&&z(N),Object.keys(B).length===0&&y.delete(q)}n.remove(N)}function z(N){let C=n.get(N);i.deleteTexture(C.__webglTexture);let q=N.source,B=y.get(q);delete B[C.__cacheKey],o.memory.textures--}function Y(N){let C=N.texture,q=n.get(N),B=n.get(C);if(B.__webglTexture!==void 0&&(i.deleteTexture(B.__webglTexture),o.memory.textures--),N.depthTexture&&N.depthTexture.dispose(),N.isWebGLCubeRenderTarget)for(let T=0;T<6;T++){if(Array.isArray(q.__webglFramebuffer[T]))for(let P=0;P<q.__webglFramebuffer[T].length;P++)i.deleteFramebuffer(q.__webglFramebuffer[T][P]);else i.deleteFramebuffer(q.__webglFramebuffer[T]);q.__webglDepthbuffer&&i.deleteRenderbuffer(q.__webglDepthbuffer[T])}else{if(Array.isArray(q.__webglFramebuffer))for(let T=0;T<q.__webglFramebuffer.length;T++)i.deleteFramebuffer(q.__webglFramebuffer[T]);else i.deleteFramebuffer(q.__webglFramebuffer);if(q.__webglDepthbuffer&&i.deleteRenderbuffer(q.__webglDepthbuffer),q.__webglMultisampledFramebuffer&&i.deleteFramebuffer(q.__webglMultisampledFramebuffer),q.__webglColorRenderbuffer)for(let T=0;T<q.__webglColorRenderbuffer.length;T++)q.__webglColorRenderbuffer[T]&&i.deleteRenderbuffer(q.__webglColorRenderbuffer[T]);q.__webglDepthRenderbuffer&&i.deleteRenderbuffer(q.__webglDepthRenderbuffer)}if(N.isWebGLMultipleRenderTargets)for(let T=0,P=C.length;T<P;T++){let G=n.get(C[T]);G.__webglTexture&&(i.deleteTexture(G.__webglTexture),o.memory.textures--),n.remove(C[T])}n.remove(C),n.remove(N)}let le=0;function te(){le=0}function re(){let N=le;return N>=l&&console.warn("THREE.WebGLTextures: Trying to use "+N+" texture units while this GPU supports only "+l),le+=1,N}function ae(N){let C=[];return C.push(N.wrapS),C.push(N.wrapT),C.push(N.wrapR||0),C.push(N.magFilter),C.push(N.minFilter),C.push(N.anisotropy),C.push(N.internalFormat),C.push(N.format),C.push(N.type),C.push(N.generateMipmaps),C.push(N.premultiplyAlpha),C.push(N.flipY),C.push(N.unpackAlignment),C.push(N.colorSpace),C.join()}function j(N,C){let q=n.get(N);if(N.isVideoTexture&&Xe(N),N.isRenderTargetTexture===!1&&N.version>0&&q.__version!==N.version){let B=N.image;if(B===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(B.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{_e(q,N,C);return}}t.bindTexture(i.TEXTURE_2D,q.__webglTexture,i.TEXTURE0+C)}function U(N,C){let q=n.get(N);if(N.version>0&&q.__version!==N.version){_e(q,N,C);return}t.bindTexture(i.TEXTURE_2D_ARRAY,q.__webglTexture,i.TEXTURE0+C)}function V(N,C){let q=n.get(N);if(N.version>0&&q.__version!==N.version){_e(q,N,C);return}t.bindTexture(i.TEXTURE_3D,q.__webglTexture,i.TEXTURE0+C)}function J(N,C){let q=n.get(N);if(N.version>0&&q.__version!==N.version){xe(q,N,C);return}t.bindTexture(i.TEXTURE_CUBE_MAP,q.__webglTexture,i.TEXTURE0+C)}let ee={[CM]:i.REPEAT,[js]:i.CLAMP_TO_EDGE,[PM]:i.MIRRORED_REPEAT},Q={[ai]:i.NEAREST,[Zhe]:i.NEAREST_MIPMAP_NEAREST,[ZA]:i.NEAREST_MIPMAP_LINEAR,[ms]:i.LINEAR,[uNe]:i.LINEAR_MIPMAP_NEAREST,[Up]:i.LINEAR_MIPMAP_LINEAR},se={[ANe]:i.NEVER,[PNe]:i.ALWAYS,[MNe]:i.LESS,[TNe]:i.LEQUAL,[kNe]:i.EQUAL,[CNe]:i.GEQUAL,[INe]:i.GREATER,[RNe]:i.NOTEQUAL};function oe(N,C,q){if(q?(i.texParameteri(N,i.TEXTURE_WRAP_S,ee[C.wrapS]),i.texParameteri(N,i.TEXTURE_WRAP_T,ee[C.wrapT]),(N===i.TEXTURE_3D||N===i.TEXTURE_2D_ARRAY)&&i.texParameteri(N,i.TEXTURE_WRAP_R,ee[C.wrapR]),i.texParameteri(N,i.TEXTURE_MAG_FILTER,Q[C.magFilter]),i.texParameteri(N,i.TEXTURE_MIN_FILTER,Q[C.minFilter])):(i.texParameteri(N,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(N,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),(N===i.TEXTURE_3D||N===i.TEXTURE_2D_ARRAY)&&i.texParameteri(N,i.TEXTURE_WRAP_R,i.CLAMP_TO_EDGE),(C.wrapS!==js||C.wrapT!==js)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),i.texParameteri(N,i.TEXTURE_MAG_FILTER,k(C.magFilter)),i.texParameteri(N,i.TEXTURE_MIN_FILTER,k(C.minFilter)),C.minFilter!==ai&&C.minFilter!==ms&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),C.compareFunction&&(i.texParameteri(N,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(N,i.TEXTURE_COMPARE_FUNC,se[C.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){let B=e.get("EXT_texture_filter_anisotropic");if(C.magFilter===ai||C.minFilter!==ZA&&C.minFilter!==Up||C.type===x0&&e.has("OES_texture_float_linear")===!1||a===!1&&C.type===Vp&&e.has("OES_texture_half_float_linear")===!1)return;(C.anisotropy>1||n.get(C).__currentAnisotropy)&&(i.texParameterf(N,B.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(C.anisotropy,r.getMaxAnisotropy())),n.get(C).__currentAnisotropy=C.anisotropy)}}function me(N,C){let q=!1;N.__webglInit===void 0&&(N.__webglInit=!0,C.addEventListener("dispose",F));let B=C.source,T=y.get(B);T===void 0&&(T={},y.set(B,T));let P=ae(C);if(P!==N.__cacheKey){T[P]===void 0&&(T[P]={texture:i.createTexture(),usedTimes:0},o.memory.textures++,q=!0),T[P].usedTimes++;let G=T[N.__cacheKey];G!==void 0&&(T[N.__cacheKey].usedTimes--,G.usedTimes===0&&z(C)),N.__cacheKey=P,N.__webglTexture=T[P].texture}return q}function _e(N,C,q){let B=i.TEXTURE_2D;(C.isDataArrayTexture||C.isCompressedArrayTexture)&&(B=i.TEXTURE_2D_ARRAY),C.isData3DTexture&&(B=i.TEXTURE_3D);let T=me(N,C),P=C.source;t.bindTexture(B,N.__webglTexture,i.TEXTURE0+q);let G=n.get(P);if(P.version!==G.__version||T===!0){t.activeTexture(i.TEXTURE0+q),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,C.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,C.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,C.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,i.NONE);let X=A(C)&&S(C.image)===!1,H=x(C.image,X,!1,d);H=tt(C,H);let he=S(H)||a,Me=s.convert(C.format,C.colorSpace),Le=s.convert(C.type),Te=L(C.internalFormat,Me,Le,C.colorSpace,C.isVideoTexture);oe(B,C,he);let Se,He=C.mipmaps,lt=a&&C.isVideoTexture!==!0,$=G.__version===void 0||T===!0,Pe=M(C,H,he);if(C.isDepthTexture)Te=i.DEPTH_COMPONENT,a?C.type===x0?Te=i.DEPTH_COMPONENT32F:C.type===b0?Te=i.DEPTH_COMPONENT24:C.type===td?Te=i.DEPTH24_STENCIL8:Te=i.DEPTH_COMPONENT16:C.type===x0&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),C.format===nd&&Te===i.DEPTH_COMPONENT&&C.type!==hk&&C.type!==b0&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),C.type=b0,Le=s.convert(C.type)),C.format===q1&&Te===i.DEPTH_COMPONENT&&(Te=i.DEPTH_STENCIL,C.type!==td&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),C.type=td,Le=s.convert(C.type))),$&&(lt?t.texStorage2D(i.TEXTURE_2D,1,Te,H.width,H.height):t.texImage2D(i.TEXTURE_2D,0,Te,H.width,H.height,0,Me,Le,null));else if(C.isDataTexture)if(He.length>0&&he){lt&&$&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,He[0].width,He[0].height);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],lt?t.texSubImage2D(i.TEXTURE_2D,ue,0,0,Se.width,Se.height,Me,Le,Se.data):t.texImage2D(i.TEXTURE_2D,ue,Te,Se.width,Se.height,0,Me,Le,Se.data);C.generateMipmaps=!1}else lt?($&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,H.width,H.height),t.texSubImage2D(i.TEXTURE_2D,0,0,0,H.width,H.height,Me,Le,H.data)):t.texImage2D(i.TEXTURE_2D,0,Te,H.width,H.height,0,Me,Le,H.data);else if(C.isCompressedTexture)if(C.isCompressedArrayTexture){lt&&$&&t.texStorage3D(i.TEXTURE_2D_ARRAY,Pe,Te,He[0].width,He[0].height,H.depth);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],C.format!==$s?Me!==null?lt?t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,ue,0,0,0,Se.width,Se.height,H.depth,Me,Se.data,0,0):t.compressedTexImage3D(i.TEXTURE_2D_ARRAY,ue,Te,Se.width,Se.height,H.depth,0,Se.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):lt?t.texSubImage3D(i.TEXTURE_2D_ARRAY,ue,0,0,0,Se.width,Se.height,H.depth,Me,Le,Se.data):t.texImage3D(i.TEXTURE_2D_ARRAY,ue,Te,Se.width,Se.height,H.depth,0,Me,Le,Se.data)}else{lt&&$&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,He[0].width,He[0].height);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],C.format!==$s?Me!==null?lt?t.compressedTexSubImage2D(i.TEXTURE_2D,ue,0,0,Se.width,Se.height,Me,Se.data):t.compressedTexImage2D(i.TEXTURE_2D,ue,Te,Se.width,Se.height,0,Se.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):lt?t.texSubImage2D(i.TEXTURE_2D,ue,0,0,Se.width,Se.height,Me,Le,Se.data):t.texImage2D(i.TEXTURE_2D,ue,Te,Se.width,Se.height,0,Me,Le,Se.data)}else if(C.isDataArrayTexture)lt?($&&t.texStorage3D(i.TEXTURE_2D_ARRAY,Pe,Te,H.width,H.height,H.depth),t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,H.width,H.height,H.depth,Me,Le,H.data)):t.texImage3D(i.TEXTURE_2D_ARRAY,0,Te,H.width,H.height,H.depth,0,Me,Le,H.data);else if(C.isData3DTexture)lt?($&&t.texStorage3D(i.TEXTURE_3D,Pe,Te,H.width,H.height,H.depth),t.texSubImage3D(i.TEXTURE_3D,0,0,0,0,H.width,H.height,H.depth,Me,Le,H.data)):t.texImage3D(i.TEXTURE_3D,0,Te,H.width,H.height,H.depth,0,Me,Le,H.data);else if(C.isFramebufferTexture){if($)if(lt)t.texStorage2D(i.TEXTURE_2D,Pe,Te,H.width,H.height);else{let ue=H.width,Ee=H.height;for(let Ce=0;Ce<Pe;Ce++)t.texImage2D(i.TEXTURE_2D,Ce,Te,ue,Ee,0,Me,Le,null),ue>>=1,Ee>>=1}}else if(He.length>0&&he){lt&&$&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,He[0].width,He[0].height);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],lt?t.texSubImage2D(i.TEXTURE_2D,ue,0,0,Me,Le,Se):t.texImage2D(i.TEXTURE_2D,ue,Te,Me,Le,Se);C.generateMipmaps=!1}else lt?($&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,H.width,H.height),t.texSubImage2D(i.TEXTURE_2D,0,0,0,Me,Le,H)):t.texImage2D(i.TEXTURE_2D,0,Te,Me,Le,H);I(C,he)&&R(B),G.__version=P.version,C.onUpdate&&C.onUpdate(C)}N.__version=C.version}function xe(N,C,q){if(C.image.length!==6)return;let B=me(N,C),T=C.source;t.bindTexture(i.TEXTURE_CUBE_MAP,N.__webglTexture,i.TEXTURE0+q);let P=n.get(T);if(T.version!==P.__version||B===!0){t.activeTexture(i.TEXTURE0+q),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,C.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,C.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,C.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,i.NONE);let G=C.isCompressedTexture||C.image[0].isCompressedTexture,X=C.image[0]&&C.image[0].isDataTexture,H=[];for(let ue=0;ue<6;ue++)!G&&!X?H[ue]=x(C.image[ue],!1,!0,c):H[ue]=X?C.image[ue].image:C.image[ue],H[ue]=tt(C,H[ue]);let he=H[0],Me=S(he)||a,Le=s.convert(C.format,C.colorSpace),Te=s.convert(C.type),Se=L(C.internalFormat,Le,Te,C.colorSpace),He=a&&C.isVideoTexture!==!0,lt=P.__version===void 0||B===!0,$=M(C,he,Me);oe(i.TEXTURE_CUBE_MAP,C,Me);let Pe;if(G){He&&lt&&t.texStorage2D(i.TEXTURE_CUBE_MAP,$,Se,he.width,he.height);for(let ue=0;ue<6;ue++){Pe=H[ue].mipmaps;for(let Ee=0;Ee<Pe.length;Ee++){let Ce=Pe[Ee];C.format!==$s?Le!==null?He?t.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,0,0,Ce.width,Ce.height,Le,Ce.data):t.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,Se,Ce.width,Ce.height,0,Ce.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,0,0,Ce.width,Ce.height,Le,Te,Ce.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,Se,Ce.width,Ce.height,0,Le,Te,Ce.data)}}}else{Pe=C.mipmaps,He&&lt&&(Pe.length>0&&$++,t.texStorage2D(i.TEXTURE_CUBE_MAP,$,Se,H[0].width,H[0].height));for(let ue=0;ue<6;ue++)if(X){He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,0,0,H[ue].width,H[ue].height,Le,Te,H[ue].data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,Se,H[ue].width,H[ue].height,0,Le,Te,H[ue].data);for(let Ee=0;Ee<Pe.length;Ee++){let ot=Pe[Ee].image[ue].image;He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,0,0,ot.width,ot.height,Le,Te,ot.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,Se,ot.width,ot.height,0,Le,Te,ot.data)}}else{He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,0,0,Le,Te,H[ue]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,Se,Le,Te,H[ue]);for(let Ee=0;Ee<Pe.length;Ee++){let Ce=Pe[Ee];He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,0,0,Le,Te,Ce.image[ue]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,Se,Le,Te,Ce.image[ue])}}}I(C,Me)&&R(i.TEXTURE_CUBE_MAP),P.__version=T.version,C.onUpdate&&C.onUpdate(C)}N.__version=C.version}function ye(N,C,q,B,T,P){let G=s.convert(q.format,q.colorSpace),X=s.convert(q.type),H=L(q.internalFormat,G,X,q.colorSpace);if(!n.get(C).__hasExternalTextures){let Me=Math.max(1,C.width>>P),Le=Math.max(1,C.height>>P);T===i.TEXTURE_3D||T===i.TEXTURE_2D_ARRAY?t.texImage3D(T,P,H,Me,Le,C.depth,0,G,X,null):t.texImage2D(T,P,H,Me,Le,0,G,X,null)}t.bindFramebuffer(i.FRAMEBUFFER,N),Ge(C)?p.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,B,T,n.get(q).__webglTexture,0,Oe(C)):(T===i.TEXTURE_2D||T>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&T<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,B,T,n.get(q).__webglTexture,P),t.bindFramebuffer(i.FRAMEBUFFER,null)}function W(N,C,q){if(i.bindRenderbuffer(i.RENDERBUFFER,N),C.depthBuffer&&!C.stencilBuffer){let B=i.DEPTH_COMPONENT16;if(q||Ge(C)){let T=C.depthTexture;T&&T.isDepthTexture&&(T.type===x0?B=i.DEPTH_COMPONENT32F:T.type===b0&&(B=i.DEPTH_COMPONENT24));let P=Oe(C);Ge(C)?p.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,P,B,C.width,C.height):i.renderbufferStorageMultisample(i.RENDERBUFFER,P,B,C.width,C.height)}else i.renderbufferStorage(i.RENDERBUFFER,B,C.width,C.height);i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.RENDERBUFFER,N)}else if(C.depthBuffer&&C.stencilBuffer){let B=Oe(C);q&&Ge(C)===!1?i.renderbufferStorageMultisample(i.RENDERBUFFER,B,i.DEPTH24_STENCIL8,C.width,C.height):Ge(C)?p.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,B,i.DEPTH24_STENCIL8,C.width,C.height):i.renderbufferStorage(i.RENDERBUFFER,i.DEPTH_STENCIL,C.width,C.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.RENDERBUFFER,N)}else{let B=C.isWebGLMultipleRenderTargets===!0?C.texture:[C.texture];for(let T=0;T<B.length;T++){let P=B[T],G=s.convert(P.format,P.colorSpace),X=s.convert(P.type),H=L(P.internalFormat,G,X,P.colorSpace),he=Oe(C);q&&Ge(C)===!1?i.renderbufferStorageMultisample(i.RENDERBUFFER,he,H,C.width,C.height):Ge(C)?p.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,he,H,C.width,C.height):i.renderbufferStorage(i.RENDERBUFFER,H,C.width,C.height)}}i.bindRenderbuffer(i.RENDERBUFFER,null)}function ke(N,C){if(C&&C.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(i.FRAMEBUFFER,N),!(C.depthTexture&&C.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(C.depthTexture).__webglTexture||C.depthTexture.image.width!==C.width||C.depthTexture.image.height!==C.height)&&(C.depthTexture.image.width=C.width,C.depthTexture.image.height=C.height,C.depthTexture.needsUpdate=!0),j(C.depthTexture,0);let B=n.get(C.depthTexture).__webglTexture,T=Oe(C);if(C.depthTexture.format===nd)Ge(C)?p.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,B,0,T):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,B,0);else if(C.depthTexture.format===q1)Ge(C)?p.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,B,0,T):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,B,0);else throw new Error("Unknown depthTexture format")}function ve(N){let C=n.get(N),q=N.isWebGLCubeRenderTarget===!0;if(N.depthTexture&&!C.__autoAllocateDepthBuffer){if(q)throw new Error("target.depthTexture not supported in Cube render targets");ke(C.__webglFramebuffer,N)}else if(q){C.__webglDepthbuffer=[];for(let B=0;B<6;B++)t.bindFramebuffer(i.FRAMEBUFFER,C.__webglFramebuffer[B]),C.__webglDepthbuffer[B]=i.createRenderbuffer(),W(C.__webglDepthbuffer[B],N,!1)}else t.bindFramebuffer(i.FRAMEBUFFER,C.__webglFramebuffer),C.__webglDepthbuffer=i.createRenderbuffer(),W(C.__webglDepthbuffer,N,!1);t.bindFramebuffer(i.FRAMEBUFFER,null)}function Ae(N,C,q){let B=n.get(N);C!==void 0&&ye(B.__webglFramebuffer,N,N.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),q!==void 0&&ve(N)}function we(N){let C=N.texture,q=n.get(N),B=n.get(C);N.addEventListener("dispose",Z),N.isWebGLMultipleRenderTargets!==!0&&(B.__webglTexture===void 0&&(B.__webglTexture=i.createTexture()),B.__version=C.version,o.memory.textures++);let T=N.isWebGLCubeRenderTarget===!0,P=N.isWebGLMultipleRenderTargets===!0,G=S(N)||a;if(T){q.__webglFramebuffer=[];for(let X=0;X<6;X++)if(a&&C.mipmaps&&C.mipmaps.length>0){q.__webglFramebuffer[X]=[];for(let H=0;H<C.mipmaps.length;H++)q.__webglFramebuffer[X][H]=i.createFramebuffer()}else q.__webglFramebuffer[X]=i.createFramebuffer()}else{if(a&&C.mipmaps&&C.mipmaps.length>0){q.__webglFramebuffer=[];for(let X=0;X<C.mipmaps.length;X++)q.__webglFramebuffer[X]=i.createFramebuffer()}else q.__webglFramebuffer=i.createFramebuffer();if(P)if(r.drawBuffers){let X=N.texture;for(let H=0,he=X.length;H<he;H++){let Me=n.get(X[H]);Me.__webglTexture===void 0&&(Me.__webglTexture=i.createTexture(),o.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(a&&N.samples>0&&Ge(N)===!1){let X=P?C:[C];q.__webglMultisampledFramebuffer=i.createFramebuffer(),q.__webglColorRenderbuffer=[],t.bindFramebuffer(i.FRAMEBUFFER,q.__webglMultisampledFramebuffer);for(let H=0;H<X.length;H++){let he=X[H];q.__webglColorRenderbuffer[H]=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,q.__webglColorRenderbuffer[H]);let Me=s.convert(he.format,he.colorSpace),Le=s.convert(he.type),Te=L(he.internalFormat,Me,Le,he.colorSpace,N.isXRRenderTarget===!0),Se=Oe(N);i.renderbufferStorageMultisample(i.RENDERBUFFER,Se,Te,N.width,N.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+H,i.RENDERBUFFER,q.__webglColorRenderbuffer[H])}i.bindRenderbuffer(i.RENDERBUFFER,null),N.depthBuffer&&(q.__webglDepthRenderbuffer=i.createRenderbuffer(),W(q.__webglDepthRenderbuffer,N,!0)),t.bindFramebuffer(i.FRAMEBUFFER,null)}}if(T){t.bindTexture(i.TEXTURE_CUBE_MAP,B.__webglTexture),oe(i.TEXTURE_CUBE_MAP,C,G);for(let X=0;X<6;X++)if(a&&C.mipmaps&&C.mipmaps.length>0)for(let H=0;H<C.mipmaps.length;H++)ye(q.__webglFramebuffer[X][H],N,C,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+X,H);else ye(q.__webglFramebuffer[X],N,C,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+X,0);I(C,G)&&R(i.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(P){let X=N.texture;for(let H=0,he=X.length;H<he;H++){let Me=X[H],Le=n.get(Me);t.bindTexture(i.TEXTURE_2D,Le.__webglTexture),oe(i.TEXTURE_2D,Me,G),ye(q.__webglFramebuffer,N,Me,i.COLOR_ATTACHMENT0+H,i.TEXTURE_2D,0),I(Me,G)&&R(i.TEXTURE_2D)}t.unbindTexture()}else{let X=i.TEXTURE_2D;if((N.isWebGL3DRenderTarget||N.isWebGLArrayRenderTarget)&&(a?X=N.isWebGL3DRenderTarget?i.TEXTURE_3D:i.TEXTURE_2D_ARRAY:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),t.bindTexture(X,B.__webglTexture),oe(X,C,G),a&&C.mipmaps&&C.mipmaps.length>0)for(let H=0;H<C.mipmaps.length;H++)ye(q.__webglFramebuffer[H],N,C,i.COLOR_ATTACHMENT0,X,H);else ye(q.__webglFramebuffer,N,C,i.COLOR_ATTACHMENT0,X,0);I(C,G)&&R(X),t.unbindTexture()}N.depthBuffer&&ve(N)}function $e(N){let C=S(N)||a,q=N.isWebGLMultipleRenderTargets===!0?N.texture:[N.texture];for(let B=0,T=q.length;B<T;B++){let P=q[B];if(I(P,C)){let G=N.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:i.TEXTURE_2D,X=n.get(P).__webglTexture;t.bindTexture(G,X),R(G),t.unbindTexture()}}}function pe(N){if(a&&N.samples>0&&Ge(N)===!1){let C=N.isWebGLMultipleRenderTargets?N.texture:[N.texture],q=N.width,B=N.height,T=i.COLOR_BUFFER_BIT,P=[],G=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,X=n.get(N),H=N.isWebGLMultipleRenderTargets===!0;if(H)for(let he=0;he<C.length;he++)t.bindFramebuffer(i.FRAMEBUFFER,X.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,null),t.bindFramebuffer(i.FRAMEBUFFER,X.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,null,0);t.bindFramebuffer(i.READ_FRAMEBUFFER,X.__webglMultisampledFramebuffer),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,X.__webglFramebuffer);for(let he=0;he<C.length;he++){P.push(i.COLOR_ATTACHMENT0+he),N.depthBuffer&&P.push(G);let Me=X.__ignoreDepthValues!==void 0?X.__ignoreDepthValues:!1;if(Me===!1&&(N.depthBuffer&&(T|=i.DEPTH_BUFFER_BIT),N.stencilBuffer&&(T|=i.STENCIL_BUFFER_BIT)),H&&i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,X.__webglColorRenderbuffer[he]),Me===!0&&(i.invalidateFramebuffer(i.READ_FRAMEBUFFER,[G]),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[G])),H){let Le=n.get(C[he]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Le,0)}i.blitFramebuffer(0,0,q,B,0,0,q,B,T,i.NEAREST),v&&i.invalidateFramebuffer(i.READ_FRAMEBUFFER,P)}if(t.bindFramebuffer(i.READ_FRAMEBUFFER,null),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),H)for(let he=0;he<C.length;he++){t.bindFramebuffer(i.FRAMEBUFFER,X.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,X.__webglColorRenderbuffer[he]);let Me=n.get(C[he]).__webglTexture;t.bindFramebuffer(i.FRAMEBUFFER,X.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,Me,0)}t.bindFramebuffer(i.DRAW_FRAMEBUFFER,X.__webglMultisampledFramebuffer)}}function Oe(N){return Math.min(u,N.samples)}function Ge(N){let C=n.get(N);return a&&N.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&C.__useRenderToTexture!==!1}function Xe(N){let C=o.render.frame;_.get(N)!==C&&(_.set(N,C),N.update())}function tt(N,C){let q=N.colorSpace,B=N.format,T=N.type;return N.isCompressedTexture===!0||N.isVideoTexture===!0||N.format===LM||q!==No&&q!==id&&(q===Mn||q===k_?a===!1?e.has("EXT_sRGB")===!0&&B===$s?(N.format=LM,N.minFilter=ms,N.generateMipmaps=!1):C=m_.sRGBToLinear(C):(B!==$s||T!==E0)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",q)),C}this.allocateTextureUnit=re,this.resetTextureUnits=te,this.setTexture2D=j,this.setTexture2DArray=U,this.setTexture3D=V,this.setTextureCube=J,this.rebindTextures=Ae,this.setupRenderTarget=we,this.updateRenderTargetMipmap=$e,this.updateMultisampleRenderTarget=pe,this.setupDepthRenderbuffer=ve,this.setupFrameBufferTexture=ye,this.useMultisampledRTT=Ge}var Sze=0,dr=1;function Eze(i,e,t){let n=t.isWebGL2;function r(s,o=id){let a,l=o===Mn||o===k_?dr:Sze;if(s===E0)return i.UNSIGNED_BYTE;if(s===gme)return i.UNSIGNED_SHORT_4_4_4_4;if(s===_me)return i.UNSIGNED_SHORT_5_5_5_1;if(s===fNe)return i.BYTE;if(s===hNe)return i.SHORT;if(s===hk)return i.UNSIGNED_SHORT;if(s===vme)return i.INT;if(s===b0)return i.UNSIGNED_INT;if(s===x0)return i.FLOAT;if(s===Vp)return n?i.HALF_FLOAT:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===mNe)return i.ALPHA;if(s===$s)return i.RGBA;if(s===pNe)return i.LUMINANCE;if(s===vNe)return i.LUMINANCE_ALPHA;if(s===nd)return i.DEPTH_COMPONENT;if(s===q1)return i.DEPTH_STENCIL;if(s===LM)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===gNe)return i.RED;if(s===yme)return i.RED_INTEGER;if(s===_Ne)return i.RG;if(s===bme)return i.RG_INTEGER;if(s===xme)return i.RGBA_INTEGER;if(s===QA||s===eM||s===tM||s===nM)if(l===dr)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===QA)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===eM)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===tM)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===nM)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===QA)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===eM)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===tM)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===nM)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Qhe||s===e5e||s===t5e||s===n5e)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Qhe)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===e5e)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===t5e)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===n5e)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===yNe)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===r5e||s===i5e)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===r5e)return l===dr?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===i5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===s5e||s===o5e||s===a5e||s===l5e||s===c5e||s===d5e||s===u5e||s===f5e||s===h5e||s===m5e||s===p5e||s===v5e||s===g5e||s===_5e)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===s5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===o5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===a5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===l5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===c5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===d5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===u5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===f5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===h5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===m5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===p5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===v5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===g5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===_5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===rM||s===y5e||s===b5e)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===rM)return l===dr?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(s===y5e)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(s===b5e)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(s===bNe||s===x5e||s===w5e||s===S5e)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(s===rM)return a.COMPRESSED_RED_RGTC1_EXT;if(s===x5e)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===w5e)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===S5e)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===td?n?i.UNSIGNED_INT_24_8:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):i[s]!==void 0?i[s]:null}return{convert:r}}var KM=class extends Xi{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},ur=class extends Do{constructor(){super(),this.isGroup=!0,this.type="Group"}},Aze={type:"move"},Dp=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new ur,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new ur,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Ne,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Ne),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new ur,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Ne,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Ne),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){let t=this._hand;if(t)for(let n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,s=null,o=null,a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(let b of e.hand.values()){let y=t.getJointPose(b,n),g=this._getHandJoint(c,b);y!==null&&(g.matrix.fromArray(y.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.matrixWorldNeedsUpdate=!0,g.jointRadius=y.radius),g.visible=y!==null}let d=c.joints["index-finger-tip"],u=c.joints["thumb-tip"],p=d.position.distanceTo(u.position),v=.02,_=.005;c.inputState.pinching&&p>v+_?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&p<=v-_&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Aze)))}return a!==null&&(a.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let n=new ur;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}},ZM=class extends Ys{constructor(e,t,n,r,s,o,a,l,c,d){if(d=d!==void 0?d:nd,d!==nd&&d!==q1)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&d===nd&&(n=b0),n===void 0&&d===q1&&(n=td),super(null,r,s,o,a,l,d,n,c),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:ai,this.minFilter=l!==void 0?l:ai,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},QM=class extends A0{constructor(e,t){super();let n=this,r=null,s=1,o=null,a="local-floor",l=1,c=null,d=null,u=null,p=null,v=null,_=null,b=t.getContextAttributes(),y=null,g=null,w=[],x=[],S=new Xi;S.layers.enable(1),S.viewport=new kr;let A=new Xi;A.layers.enable(2),A.viewport=new kr;let I=[S,A],R=new KM;R.layers.enable(1),R.layers.enable(2);let L=null,M=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(U){let V=w[U];return V===void 0&&(V=new Dp,w[U]=V),V.getTargetRaySpace()},this.getControllerGrip=function(U){let V=w[U];return V===void 0&&(V=new Dp,w[U]=V),V.getGripSpace()},this.getHand=function(U){let V=w[U];return V===void 0&&(V=new Dp,w[U]=V),V.getHandSpace()};function k(U){let V=x.indexOf(U.inputSource);if(V===-1)return;let J=w[V];J!==void 0&&(J.update(U.inputSource,U.frame,c||o),J.dispatchEvent({type:U.type,data:U.inputSource}))}function F(){r.removeEventListener("select",k),r.removeEventListener("selectstart",k),r.removeEventListener("selectend",k),r.removeEventListener("squeeze",k),r.removeEventListener("squeezestart",k),r.removeEventListener("squeezeend",k),r.removeEventListener("end",F),r.removeEventListener("inputsourceschange",Z);for(let U=0;U<w.length;U++){let V=x[U];V!==null&&(x[U]=null,w[U].disconnect(V))}L=null,M=null,e.setRenderTarget(y),v=null,p=null,u=null,r=null,g=null,j.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(U){s=U,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(U){a=U,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return c||o},this.setReferenceSpace=function(U){c=U},this.getBaseLayer=function(){return p!==null?p:v},this.getBinding=function(){return u},this.getFrame=function(){return _},this.getSession=function(){return r},this.setSession=async function(U){if(r=U,r!==null){if(y=e.getRenderTarget(),r.addEventListener("select",k),r.addEventListener("selectstart",k),r.addEventListener("selectend",k),r.addEventListener("squeeze",k),r.addEventListener("squeezestart",k),r.addEventListener("squeezeend",k),r.addEventListener("end",F),r.addEventListener("inputsourceschange",Z),b.xrCompatible!==!0&&await t.makeXRCompatible(),r.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let V={antialias:r.renderState.layers===void 0?b.antialias:!0,alpha:!0,depth:b.depth,stencil:b.stencil,framebufferScaleFactor:s};v=new XRWebGLLayer(r,t,V),r.updateRenderState({baseLayer:v}),g=new Za(v.framebufferWidth,v.framebufferHeight,{format:$s,type:E0,colorSpace:e.outputColorSpace,stencilBuffer:b.stencil})}else{let V=null,J=null,ee=null;b.depth&&(ee=b.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,V=b.stencil?q1:nd,J=b.stencil?td:b0);let Q={colorFormat:t.RGBA8,depthFormat:ee,scaleFactor:s};u=new XRWebGLBinding(r,t),p=u.createProjectionLayer(Q),r.updateRenderState({layers:[p]}),g=new Za(p.textureWidth,p.textureHeight,{format:$s,type:E0,depthTexture:new ZM(p.textureWidth,p.textureHeight,J,void 0,void 0,void 0,void 0,void 0,void 0,V),stencilBuffer:b.stencil,colorSpace:e.outputColorSpace,samples:b.antialias?4:0});let se=e.properties.get(g);se.__ignoreDepthValues=p.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(l),c=null,o=await r.requestReferenceSpace(a),j.setContext(r),j.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(r!==null)return r.environmentBlendMode};function Z(U){for(let V=0;V<U.removed.length;V++){let J=U.removed[V],ee=x.indexOf(J);ee>=0&&(x[ee]=null,w[ee].disconnect(J))}for(let V=0;V<U.added.length;V++){let J=U.added[V],ee=x.indexOf(J);if(ee===-1){for(let se=0;se<w.length;se++)if(se>=x.length){x.push(J),ee=se;break}else if(x[se]===null){x[se]=J,ee=se;break}if(ee===-1)break}let Q=w[ee];Q&&Q.connect(J)}}let D=new Ne,z=new Ne;function Y(U,V,J){D.setFromMatrixPosition(V.matrixWorld),z.setFromMatrixPosition(J.matrixWorld);let ee=D.distanceTo(z),Q=V.projectionMatrix.elements,se=J.projectionMatrix.elements,oe=Q[14]/(Q[10]-1),me=Q[14]/(Q[10]+1),_e=(Q[9]+1)/Q[5],xe=(Q[9]-1)/Q[5],ye=(Q[8]-1)/Q[0],W=(se[8]+1)/se[0],ke=oe*ye,ve=oe*W,Ae=ee/(-ye+W),we=Ae*-ye;V.matrixWorld.decompose(U.position,U.quaternion,U.scale),U.translateX(we),U.translateZ(Ae),U.matrixWorld.compose(U.position,U.quaternion,U.scale),U.matrixWorldInverse.copy(U.matrixWorld).invert();let $e=oe+Ae,pe=me+Ae,Oe=ke-we,Ge=ve+(ee-we),Xe=_e*me/pe*$e,tt=xe*me/pe*$e;U.projectionMatrix.makePerspective(Oe,Ge,Xe,tt,$e,pe),U.projectionMatrixInverse.copy(U.projectionMatrix).invert()}function le(U,V){V===null?U.matrixWorld.copy(U.matrix):U.matrixWorld.multiplyMatrices(V.matrixWorld,U.matrix),U.matrixWorldInverse.copy(U.matrixWorld).invert()}this.updateCamera=function(U){if(r===null)return;R.near=A.near=S.near=U.near,R.far=A.far=S.far=U.far,(L!==R.near||M!==R.far)&&(r.updateRenderState({depthNear:R.near,depthFar:R.far}),L=R.near,M=R.far);let V=U.parent,J=R.cameras;le(R,V);for(let ee=0;ee<J.length;ee++)le(J[ee],V);J.length===2?Y(R,S,A):R.projectionMatrix.copy(S.projectionMatrix),te(U,R,V)};function te(U,V,J){J===null?U.matrix.copy(V.matrixWorld):(U.matrix.copy(J.matrixWorld),U.matrix.invert(),U.matrix.multiply(V.matrixWorld)),U.matrix.decompose(U.position,U.quaternion,U.scale),U.updateMatrixWorld(!0),U.projectionMatrix.copy(V.projectionMatrix),U.projectionMatrixInverse.copy(V.projectionMatrixInverse),U.isPerspectiveCamera&&(U.fov=BM*2*Math.atan(1/U.projectionMatrix.elements[5]),U.zoom=1)}this.getCamera=function(){return R},this.getFoveation=function(){if(!(p===null&&v===null))return l},this.setFoveation=function(U){l=U,p!==null&&(p.fixedFoveation=U),v!==null&&v.fixedFoveation!==void 0&&(v.fixedFoveation=U)};let re=null;function ae(U,V){if(d=V.getViewerPose(c||o),_=V,d!==null){let J=d.views;v!==null&&(e.setRenderTargetFramebuffer(g,v.framebuffer),e.setRenderTarget(g));let ee=!1;J.length!==R.cameras.length&&(R.cameras.length=0,ee=!0);for(let Q=0;Q<J.length;Q++){let se=J[Q],oe=null;if(v!==null)oe=v.getViewport(se);else{let _e=u.getViewSubImage(p,se);oe=_e.viewport,Q===0&&(e.setRenderTargetTextures(g,_e.colorTexture,p.ignoreDepthValues?void 0:_e.depthStencilTexture),e.setRenderTarget(g))}let me=I[Q];me===void 0&&(me=new Xi,me.layers.enable(Q),me.viewport=new kr,I[Q]=me),me.matrix.fromArray(se.transform.matrix),me.matrix.decompose(me.position,me.quaternion,me.scale),me.projectionMatrix.fromArray(se.projectionMatrix),me.projectionMatrixInverse.copy(me.projectionMatrix).invert(),me.viewport.set(oe.x,oe.y,oe.width,oe.height),Q===0&&(R.matrix.copy(me.matrix),R.matrix.decompose(R.position,R.quaternion,R.scale)),ee===!0&&R.cameras.push(me)}}for(let J=0;J<w.length;J++){let ee=x[J],Q=w[J];ee!==null&&Q!==void 0&&Q.update(ee,V,c||o)}re&&re(U,V),V.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:V}),_=null}let j=new kme;j.setAnimationLoop(ae),this.setAnimationLoop=function(U){re=U},this.dispose=function(){}}};function Mze(i,e){function t(y,g){y.matrixAutoUpdate===!0&&y.updateMatrix(),g.value.copy(y.matrix)}function n(y,g){g.color.getRGB(y.fogColor.value,Mme(i)),g.isFog?(y.fogNear.value=g.near,y.fogFar.value=g.far):g.isFogExp2&&(y.fogDensity.value=g.density)}function r(y,g,w,x,S){g.isMeshBasicMaterial||g.isMeshLambertMaterial?s(y,g):g.isMeshToonMaterial?(s(y,g),u(y,g)):g.isMeshPhongMaterial?(s(y,g),d(y,g)):g.isMeshStandardMaterial?(s(y,g),p(y,g),g.isMeshPhysicalMaterial&&v(y,g,S)):g.isMeshMatcapMaterial?(s(y,g),_(y,g)):g.isMeshDepthMaterial?s(y,g):g.isMeshDistanceMaterial?(s(y,g),b(y,g)):g.isMeshNormalMaterial?s(y,g):g.isLineBasicMaterial?(o(y,g),g.isLineDashedMaterial&&a(y,g)):g.isPointsMaterial?l(y,g,w,x):g.isSpriteMaterial?c(y,g):g.isShadowMaterial?(y.color.value.copy(g.color),y.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function s(y,g){y.opacity.value=g.opacity,g.color&&y.diffuse.value.copy(g.color),g.emissive&&y.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(y.map.value=g.map,t(g.map,y.mapTransform)),g.alphaMap&&(y.alphaMap.value=g.alphaMap,t(g.alphaMap,y.alphaMapTransform)),g.bumpMap&&(y.bumpMap.value=g.bumpMap,t(g.bumpMap,y.bumpMapTransform),y.bumpScale.value=g.bumpScale,g.side===wi&&(y.bumpScale.value*=-1)),g.normalMap&&(y.normalMap.value=g.normalMap,t(g.normalMap,y.normalMapTransform),y.normalScale.value.copy(g.normalScale),g.side===wi&&y.normalScale.value.negate()),g.displacementMap&&(y.displacementMap.value=g.displacementMap,t(g.displacementMap,y.displacementMapTransform),y.displacementScale.value=g.displacementScale,y.displacementBias.value=g.displacementBias),g.emissiveMap&&(y.emissiveMap.value=g.emissiveMap,t(g.emissiveMap,y.emissiveMapTransform)),g.specularMap&&(y.specularMap.value=g.specularMap,t(g.specularMap,y.specularMapTransform)),g.alphaTest>0&&(y.alphaTest.value=g.alphaTest);let w=e.get(g).envMap;if(w&&(y.envMap.value=w,y.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,y.reflectivity.value=g.reflectivity,y.ior.value=g.ior,y.refractionRatio.value=g.refractionRatio),g.lightMap){y.lightMap.value=g.lightMap;let x=i._useLegacyLights===!0?Math.PI:1;y.lightMapIntensity.value=g.lightMapIntensity*x,t(g.lightMap,y.lightMapTransform)}g.aoMap&&(y.aoMap.value=g.aoMap,y.aoMapIntensity.value=g.aoMapIntensity,t(g.aoMap,y.aoMapTransform))}function o(y,g){y.diffuse.value.copy(g.color),y.opacity.value=g.opacity,g.map&&(y.map.value=g.map,t(g.map,y.mapTransform))}function a(y,g){y.dashSize.value=g.dashSize,y.totalSize.value=g.dashSize+g.gapSize,y.scale.value=g.scale}function l(y,g,w,x){y.diffuse.value.copy(g.color),y.opacity.value=g.opacity,y.size.value=g.size*w,y.scale.value=x*.5,g.map&&(y.map.value=g.map,t(g.map,y.uvTransform)),g.alphaMap&&(y.alphaMap.value=g.alphaMap,t(g.alphaMap,y.alphaMapTransform)),g.alphaTest>0&&(y.alphaTest.value=g.alphaTest)}function c(y,g){y.diffuse.value.copy(g.color),y.opacity.value=g.opacity,y.rotation.value=g.rotation,g.map&&(y.map.value=g.map,t(g.map,y.mapTransform)),g.alphaMap&&(y.alphaMap.value=g.alphaMap,t(g.alphaMap,y.alphaMapTransform)),g.alphaTest>0&&(y.alphaTest.value=g.alphaTest)}function d(y,g){y.specular.value.copy(g.specular),y.shininess.value=Math.max(g.shininess,1e-4)}function u(y,g){g.gradientMap&&(y.gradientMap.value=g.gradientMap)}function p(y,g){y.metalness.value=g.metalness,g.metalnessMap&&(y.metalnessMap.value=g.metalnessMap,t(g.metalnessMap,y.metalnessMapTransform)),y.roughness.value=g.roughness,g.roughnessMap&&(y.roughnessMap.value=g.roughnessMap,t(g.roughnessMap,y.roughnessMapTransform)),e.get(g).envMap&&(y.envMapIntensity.value=g.envMapIntensity)}function v(y,g,w){y.ior.value=g.ior,g.sheen>0&&(y.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),y.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(y.sheenColorMap.value=g.sheenColorMap,t(g.sheenColorMap,y.sheenColorMapTransform)),g.sheenRoughnessMap&&(y.sheenRoughnessMap.value=g.sheenRoughnessMap,t(g.sheenRoughnessMap,y.sheenRoughnessMapTransform))),g.clearcoat>0&&(y.clearcoat.value=g.clearcoat,y.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(y.clearcoatMap.value=g.clearcoatMap,t(g.clearcoatMap,y.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(y.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,t(g.clearcoatRoughnessMap,y.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(y.clearcoatNormalMap.value=g.clearcoatNormalMap,t(g.clearcoatNormalMap,y.clearcoatNormalMapTransform),y.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===wi&&y.clearcoatNormalScale.value.negate())),g.iridescence>0&&(y.iridescence.value=g.iridescence,y.iridescenceIOR.value=g.iridescenceIOR,y.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],y.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(y.iridescenceMap.value=g.iridescenceMap,t(g.iridescenceMap,y.iridescenceMapTransform)),g.iridescenceThicknessMap&&(y.iridescenceThicknessMap.value=g.iridescenceThicknessMap,t(g.iridescenceThicknessMap,y.iridescenceThicknessMapTransform))),g.transmission>0&&(y.transmission.value=g.transmission,y.transmissionSamplerMap.value=w.texture,y.transmissionSamplerSize.value.set(w.width,w.height),g.transmissionMap&&(y.transmissionMap.value=g.transmissionMap,t(g.transmissionMap,y.transmissionMapTransform)),y.thickness.value=g.thickness,g.thicknessMap&&(y.thicknessMap.value=g.thicknessMap,t(g.thicknessMap,y.thicknessMapTransform)),y.attenuationDistance.value=g.attenuationDistance,y.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(y.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(y.anisotropyMap.value=g.anisotropyMap,t(g.anisotropyMap,y.anisotropyMapTransform))),y.specularIntensity.value=g.specularIntensity,y.specularColor.value.copy(g.specularColor),g.specularColorMap&&(y.specularColorMap.value=g.specularColorMap,t(g.specularColorMap,y.specularColorMapTransform)),g.specularIntensityMap&&(y.specularIntensityMap.value=g.specularIntensityMap,t(g.specularIntensityMap,y.specularIntensityMapTransform))}function _(y,g){g.matcap&&(y.matcap.value=g.matcap)}function b(y,g){let w=e.get(g).light;y.referencePosition.value.setFromMatrixPosition(w.matrixWorld),y.nearDistance.value=w.shadow.camera.near,y.farDistance.value=w.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function kze(i,e,t,n){let r={},s={},o=[],a=t.isWebGL2?i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(w,x){let S=x.program;n.uniformBlockBinding(w,S)}function c(w,x){let S=r[w.id];S===void 0&&(_(w),S=d(w),r[w.id]=S,w.addEventListener("dispose",y));let A=x.program;n.updateUBOMapping(w,A);let I=e.render.frame;s[w.id]!==I&&(p(w),s[w.id]=I)}function d(w){let x=u();w.__bindingPointIndex=x;let S=i.createBuffer(),A=w.__size,I=w.usage;return i.bindBuffer(i.UNIFORM_BUFFER,S),i.bufferData(i.UNIFORM_BUFFER,A,I),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,x,S),S}function u(){for(let w=0;w<a;w++)if(o.indexOf(w)===-1)return o.push(w),w;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function p(w){let x=r[w.id],S=w.uniforms,A=w.__cache;i.bindBuffer(i.UNIFORM_BUFFER,x);for(let I=0,R=S.length;I<R;I++){let L=S[I];if(v(L,I,A)===!0){let M=L.__offset,k=Array.isArray(L.value)?L.value:[L.value],F=0;for(let Z=0;Z<k.length;Z++){let D=k[Z],z=b(D);typeof D=="number"?(L.__data[0]=D,i.bufferSubData(i.UNIFORM_BUFFER,M+F,L.__data)):D.isMatrix3?(L.__data[0]=D.elements[0],L.__data[1]=D.elements[1],L.__data[2]=D.elements[2],L.__data[3]=D.elements[0],L.__data[4]=D.elements[3],L.__data[5]=D.elements[4],L.__data[6]=D.elements[5],L.__data[7]=D.elements[0],L.__data[8]=D.elements[6],L.__data[9]=D.elements[7],L.__data[10]=D.elements[8],L.__data[11]=D.elements[0]):(D.toArray(L.__data,F),F+=z.storage/Float32Array.BYTES_PER_ELEMENT)}i.bufferSubData(i.UNIFORM_BUFFER,M,L.__data)}}i.bindBuffer(i.UNIFORM_BUFFER,null)}function v(w,x,S){let A=w.value;if(S[x]===void 0){if(typeof A=="number")S[x]=A;else{let I=Array.isArray(A)?A:[A],R=[];for(let L=0;L<I.length;L++)R.push(I[L].clone());S[x]=R}return!0}else if(typeof A=="number"){if(S[x]!==A)return S[x]=A,!0}else{let I=Array.isArray(S[x])?S[x]:[S[x]],R=Array.isArray(A)?A:[A];for(let L=0;L<I.length;L++){let M=I[L];if(M.equals(R[L])===!1)return M.copy(R[L]),!0}}return!1}function _(w){let x=w.uniforms,S=0,A=16,I=0;for(let R=0,L=x.length;R<L;R++){let M=x[R],k={boundary:0,storage:0},F=Array.isArray(M.value)?M.value:[M.value];for(let Z=0,D=F.length;Z<D;Z++){let z=F[Z],Y=b(z);k.boundary+=Y.boundary,k.storage+=Y.storage}if(M.__data=new Float32Array(k.storage/Float32Array.BYTES_PER_ELEMENT),M.__offset=S,R>0){I=S%A;let Z=A-I;I!==0&&Z-k.boundary<0&&(S+=A-I,M.__offset=S)}S+=k.storage}return I=S%A,I>0&&(S+=A-I),w.__size=S,w.__cache={},this}function b(w){let x={boundary:0,storage:0};return typeof w=="number"?(x.boundary=4,x.storage=4):w.isVector2?(x.boundary=8,x.storage=8):w.isVector3||w.isColor?(x.boundary=16,x.storage=12):w.isVector4?(x.boundary=16,x.storage=16):w.isMatrix3?(x.boundary=48,x.storage=48):w.isMatrix4?(x.boundary=64,x.storage=64):w.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",w),x}function y(w){let x=w.target;x.removeEventListener("dispose",y);let S=o.indexOf(x.__bindingPointIndex);o.splice(S,1),i.deleteBuffer(r[x.id]),delete r[x.id],delete s[x.id]}function g(){for(let w in r)i.deleteBuffer(r[w]);o=[],r={},s={}}return{bind:l,update:c,dispose:g}}var ek=class{constructor(e={}){let{canvas:t=BNe(),context:n=null,depth:r=!0,stencil:s=!0,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:u=!1}=e;this.isWebGLRenderer=!0;let p;n!==null?p=n.getContextAttributes().alpha:p=o;let v=new Uint32Array(4),_=new Int32Array(4),b=null,y=null,g=[],w=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputColorSpace=Mn,this._useLegacyLights=!1,this.toneMapping=S0,this.toneMappingExposure=1;let x=this,S=!1,A=0,I=0,R=null,L=-1,M=null,k=new kr,F=new kr,Z=null,D=new un(0),z=0,Y=t.width,le=t.height,te=1,re=null,ae=null,j=new kr(0,0,Y,le),U=new kr(0,0,Y,le),V=!1,J=new E_,ee=!1,Q=!1,se=null,oe=new Wr,me=new Qt,_e=new Ne,xe={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ye(){return R===null?te:1}let W=n;function ke(O,ie){for(let ce=0;ce<O.length;ce++){let ne=O[ce],fe=t.getContext(ne,ie);if(fe!==null)return fe}return null}try{let O={alpha:!0,depth:r,stencil:s,antialias:a,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:d,failIfMajorPerformanceCaveat:u};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${fk}`),t.addEventListener("webglcontextlost",Pe,!1),t.addEventListener("webglcontextrestored",ue,!1),t.addEventListener("webglcontextcreationerror",Ee,!1),W===null){let ie=["webgl2","webgl","experimental-webgl"];if(x.isWebGL1Renderer===!0&&ie.shift(),W=ke(ie,O),W===null)throw ke(ie)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}typeof WebGLRenderingContext<"u"&&W instanceof WebGLRenderingContext&&console.warn("THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163."),W.getShaderPrecisionFormat===void 0&&(W.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(O){throw console.error("THREE.WebGLRenderer: "+O.message),O}let ve,Ae,we,$e,pe,Oe,Ge,Xe,tt,N,C,q,B,T,P,G,X,H,he,Me,Le,Te,Se,He;function lt(){ve=new $Ve(W),Ae=new zVe(W,ve,e),ve.init(Ae),Te=new Eze(W,ve,Ae),we=new xze(W,ve,Ae),$e=new JVe(W),pe=new cze,Oe=new wze(W,ve,we,pe,Ae,Te,$e),Ge=new qVe(x),Xe=new jVe(x),tt=new oDe(W,Ae),Se=new VVe(W,ve,tt,Ae),N=new XVe(W,tt,$e,Se),C=new eFe(W,N,tt,$e),he=new QVe(W,Ae,Oe),G=new HVe(pe),q=new lze(x,Ge,Xe,ve,Ae,Se,G),B=new Mze(x,pe),T=new uze,P=new gze(ve,Ae),H=new UVe(x,Ge,Xe,we,C,p,l),X=new bze(x,C,Ae),He=new kze(W,$e,Ae,we),Me=new FVe(W,ve,$e,Ae),Le=new YVe(W,ve,$e,Ae),$e.programs=q.programs,x.capabilities=Ae,x.extensions=ve,x.properties=pe,x.renderLists=T,x.shadowMap=X,x.state=we,x.info=$e}lt();let $=new QM(x,W);this.xr=$,this.getContext=function(){return W},this.getContextAttributes=function(){return W.getContextAttributes()},this.forceContextLoss=function(){let O=ve.get("WEBGL_lose_context");O&&O.loseContext()},this.forceContextRestore=function(){let O=ve.get("WEBGL_lose_context");O&&O.restoreContext()},this.getPixelRatio=function(){return te},this.setPixelRatio=function(O){O!==void 0&&(te=O,this.setSize(Y,le,!1))},this.getSize=function(O){return O.set(Y,le)},this.setSize=function(O,ie,ce=!0){if($.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Y=O,le=ie,t.width=Math.floor(O*te),t.height=Math.floor(ie*te),ce===!0&&(t.style.width=O+"px",t.style.height=ie+"px"),this.setViewport(0,0,O,ie)},this.getDrawingBufferSize=function(O){return O.set(Y*te,le*te).floor()},this.setDrawingBufferSize=function(O,ie,ce){Y=O,le=ie,te=ce,t.width=Math.floor(O*ce),t.height=Math.floor(ie*ce),this.setViewport(0,0,O,ie)},this.getCurrentViewport=function(O){return O.copy(k)},this.getViewport=function(O){return O.copy(j)},this.setViewport=function(O,ie,ce,ne){O.isVector4?j.set(O.x,O.y,O.z,O.w):j.set(O,ie,ce,ne),we.viewport(k.copy(j).multiplyScalar(te).floor())},this.getScissor=function(O){return O.copy(U)},this.setScissor=function(O,ie,ce,ne){O.isVector4?U.set(O.x,O.y,O.z,O.w):U.set(O,ie,ce,ne),we.scissor(F.copy(U).multiplyScalar(te).floor())},this.getScissorTest=function(){return V},this.setScissorTest=function(O){we.setScissorTest(V=O)},this.setOpaqueSort=function(O){re=O},this.setTransparentSort=function(O){ae=O},this.getClearColor=function(O){return O.copy(H.getClearColor())},this.setClearColor=function(){H.setClearColor.apply(H,arguments)},this.getClearAlpha=function(){return H.getClearAlpha()},this.setClearAlpha=function(){H.setClearAlpha.apply(H,arguments)},this.clear=function(O=!0,ie=!0,ce=!0){let ne=0;if(O){let fe=!1;if(R!==null){let Re=R.texture.format;fe=Re===xme||Re===bme||Re===yme}if(fe){let Re=R.texture.type,De=Re===E0||Re===b0||Re===hk||Re===td||Re===gme||Re===_me,ze=H.getClearColor(),Ve=H.getClearAlpha(),Je=ze.r,We=ze.g,Ye=ze.b;De?(v[0]=Je,v[1]=We,v[2]=Ye,v[3]=Ve,W.clearBufferuiv(W.COLOR,0,v)):(_[0]=Je,_[1]=We,_[2]=Ye,_[3]=Ve,W.clearBufferiv(W.COLOR,0,_))}else ne|=W.COLOR_BUFFER_BIT}ie&&(ne|=W.DEPTH_BUFFER_BIT),ce&&(ne|=W.STENCIL_BUFFER_BIT),W.clear(ne)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Pe,!1),t.removeEventListener("webglcontextrestored",ue,!1),t.removeEventListener("webglcontextcreationerror",Ee,!1),T.dispose(),P.dispose(),pe.dispose(),Ge.dispose(),Xe.dispose(),C.dispose(),Se.dispose(),He.dispose(),q.dispose(),$.dispose(),$.removeEventListener("sessionstart",mt),$.removeEventListener("sessionend",Rn),se&&(se.dispose(),se=null),Xt.stop()};function Pe(O){O.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),S=!0}function ue(){console.log("THREE.WebGLRenderer: Context Restored."),S=!1;let O=$e.autoReset,ie=X.enabled,ce=X.autoUpdate,ne=X.needsUpdate,fe=X.type;lt(),$e.autoReset=O,X.enabled=ie,X.autoUpdate=ce,X.needsUpdate=ne,X.type=fe}function Ee(O){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",O.statusMessage)}function Ce(O){let ie=O.target;ie.removeEventListener("dispose",Ce),ot(ie)}function ot(O){pt(O),pe.remove(O)}function pt(O){let ie=pe.get(O).programs;ie!==void 0&&(ie.forEach(function(ce){q.releaseProgram(ce)}),O.isShaderMaterial&&q.releaseShaderCache(O))}this.renderBufferDirect=function(O,ie,ce,ne,fe,Re){ie===null&&(ie=xe);let De=fe.isMesh&&fe.matrixWorld.determinant()<0,ze=nt(O,ie,ce,ne,fe);we.setMaterial(ne,De);let Ve=ce.index,Je=1;if(ne.wireframe===!0){if(Ve=N.getWireframeAttribute(ce),Ve===void 0)return;Je=2}let We=ce.drawRange,Ye=ce.attributes.position,rt=We.start*Je,dt=(We.start+We.count)*Je;Re!==null&&(rt=Math.max(rt,Re.start*Je),dt=Math.min(dt,(Re.start+Re.count)*Je)),Ve!==null?(rt=Math.max(rt,0),dt=Math.min(dt,Ve.count)):Ye!=null&&(rt=Math.max(rt,0),dt=Math.min(dt,Ye.count));let qt=dt-rt;if(qt<0||qt===1/0)return;Se.setup(fe,ne,ze,ce,Ve);let sn,vt=Me;if(Ve!==null&&(sn=tt.get(Ve),vt=Le,vt.setIndex(sn)),fe.isMesh)ne.wireframe===!0?(we.setLineWidth(ne.wireframeLinewidth*ye()),vt.setMode(W.LINES)):vt.setMode(W.TRIANGLES);else if(fe.isLine){let Ze=ne.linewidth;Ze===void 0&&(Ze=1),we.setLineWidth(Ze*ye()),fe.isLineSegments?vt.setMode(W.LINES):fe.isLineLoop?vt.setMode(W.LINE_LOOP):vt.setMode(W.LINE_STRIP)}else fe.isPoints?vt.setMode(W.POINTS):fe.isSprite&&vt.setMode(W.TRIANGLES);if(fe.isInstancedMesh)vt.renderInstances(rt,qt,fe.count);else if(ce.isInstancedBufferGeometry){let Ze=ce._maxInstanceCount!==void 0?ce._maxInstanceCount:1/0,ki=Math.min(ce.instanceCount,Ze);vt.renderInstances(rt,qt,ki)}else vt.render(rt,qt)},this.compile=function(O,ie){function ce(ne,fe,Re){ne.transparent===!0&&ne.side===Yi&&ne.forceSinglePass===!1?(ne.side=wi,ne.needsUpdate=!0,Ie(ne,fe,Re),ne.side=Xs,ne.needsUpdate=!0,Ie(ne,fe,Re),ne.side=Yi):Ie(ne,fe,Re)}y=P.get(O),y.init(),w.push(y),O.traverseVisible(function(ne){ne.isLight&&ne.layers.test(ie.layers)&&(y.pushLight(ne),ne.castShadow&&y.pushShadow(ne))}),y.setupLights(x._useLegacyLights),O.traverse(function(ne){let fe=ne.material;if(fe)if(Array.isArray(fe))for(let Re=0;Re<fe.length;Re++){let De=fe[Re];ce(De,O,ne)}else ce(fe,O,ne)}),w.pop(),y=null};let Tt=null;function In(O){Tt&&Tt(O)}function mt(){Xt.stop()}function Rn(){Xt.start()}let Xt=new kme;Xt.setAnimationLoop(In),typeof self<"u"&&Xt.setContext(self),this.setAnimationLoop=function(O){Tt=O,$.setAnimationLoop(O),O===null?Xt.stop():Xt.start()},$.addEventListener("sessionstart",mt),$.addEventListener("sessionend",Rn),this.render=function(O,ie){if(ie!==void 0&&ie.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(S===!0)return;O.matrixWorldAutoUpdate===!0&&O.updateMatrixWorld(),ie.parent===null&&ie.matrixWorldAutoUpdate===!0&&ie.updateMatrixWorld(),$.enabled===!0&&$.isPresenting===!0&&($.cameraAutoUpdate===!0&&$.updateCamera(ie),ie=$.getCamera()),O.isScene===!0&&O.onBeforeRender(x,O,ie,R),y=P.get(O,w.length),y.init(),w.push(y),oe.multiplyMatrices(ie.projectionMatrix,ie.matrixWorldInverse),J.setFromProjectionMatrix(oe),Q=this.localClippingEnabled,ee=G.init(this.clippingPlanes,Q),b=T.get(O,g.length),b.init(),g.push(b),q0(O,ie,0,x.sortObjects),b.finish(),x.sortObjects===!0&&b.sort(re,ae),this.info.render.frame++,ee===!0&&G.beginShadows();let ce=y.state.shadowsArray;if(X.render(ce,O,ie),ee===!0&&G.endShadows(),this.info.autoReset===!0&&this.info.reset(),H.render(b,O),y.setupLights(x._useLegacyLights),ie.isArrayCamera){let ne=ie.cameras;for(let fe=0,Re=ne.length;fe<Re;fe++){let De=ne[fe];dl(b,O,De,De.viewport)}}else dl(b,O,ie);R!==null&&(Oe.updateMultisampleRenderTarget(R),Oe.updateRenderTargetMipmap(R)),O.isScene===!0&&O.onAfterRender(x,O,ie),Se.resetDefaultState(),L=-1,M=null,w.pop(),w.length>0?y=w[w.length-1]:y=null,g.pop(),g.length>0?b=g[g.length-1]:b=null};function q0(O,ie,ce,ne){if(O.visible===!1)return;if(O.layers.test(ie.layers)){if(O.isGroup)ce=O.renderOrder;else if(O.isLOD)O.autoUpdate===!0&&O.update(ie);else if(O.isLight)y.pushLight(O),O.castShadow&&y.pushShadow(O);else if(O.isSprite){if(!O.frustumCulled||J.intersectsSprite(O)){ne&&_e.setFromMatrixPosition(O.matrixWorld).applyMatrix4(oe);let De=C.update(O),ze=O.material;ze.visible&&b.push(O,De,ze,ce,_e.z,null)}}else if((O.isMesh||O.isLine||O.isPoints)&&(!O.frustumCulled||J.intersectsObject(O))){let De=C.update(O),ze=O.material;if(ne&&(O.boundingSphere!==void 0?(O.boundingSphere===null&&O.computeBoundingSphere(),_e.copy(O.boundingSphere.center)):(De.boundingSphere===null&&De.computeBoundingSphere(),_e.copy(De.boundingSphere.center)),_e.applyMatrix4(O.matrixWorld).applyMatrix4(oe)),Array.isArray(ze)){let Ve=De.groups;for(let Je=0,We=Ve.length;Je<We;Je++){let Ye=Ve[Je],rt=ze[Ye.materialIndex];rt&&rt.visible&&b.push(O,De,rt,ce,_e.z,Ye)}}else ze.visible&&b.push(O,De,ze,ce,_e.z,null)}}let Re=O.children;for(let De=0,ze=Re.length;De<ze;De++)q0(Re[De],ie,ce,ne)}function dl(O,ie,ce,ne){let fe=O.opaque,Re=O.transmissive,De=O.transparent;y.setupLightsView(ce),ee===!0&&G.setGlobalState(x.clippingPlanes,ce),Re.length>0&&ge(fe,Re,ie,ce),ne&&we.viewport(k.copy(ne)),fe.length>0&&de(fe,ie,ce),Re.length>0&&de(Re,ie,ce),De.length>0&&de(De,ie,ce),we.buffers.depth.setTest(!0),we.buffers.depth.setMask(!0),we.buffers.color.setMask(!0),we.setPolygonOffset(!1)}function ge(O,ie,ce,ne){let fe=Ae.isWebGL2;se===null&&(se=new Za(1,1,{generateMipmaps:!0,type:ve.has("EXT_color_buffer_half_float")?Vp:E0,minFilter:Up,samples:fe?4:0})),x.getDrawingBufferSize(me),fe?se.setSize(me.x,me.y):se.setSize(OM(me.x),OM(me.y));let Re=x.getRenderTarget();x.setRenderTarget(se),x.getClearColor(D),z=x.getClearAlpha(),z<1&&x.setClearColor(16777215,.5),x.clear();let De=x.toneMapping;x.toneMapping=S0,de(O,ce,ne),Oe.updateMultisampleRenderTarget(se),Oe.updateRenderTargetMipmap(se);let ze=!1;for(let Ve=0,Je=ie.length;Ve<Je;Ve++){let We=ie[Ve],Ye=We.object,rt=We.geometry,dt=We.material,qt=We.group;if(dt.side===Yi&&Ye.layers.test(ne.layers)){let sn=dt.side;dt.side=wi,dt.needsUpdate=!0,be(Ye,ce,ne,rt,dt,qt),dt.side=sn,dt.needsUpdate=!0,ze=!0}}ze===!0&&(Oe.updateMultisampleRenderTarget(se),Oe.updateRenderTargetMipmap(se)),x.setRenderTarget(Re),x.setClearColor(D,z),x.toneMapping=De}function de(O,ie,ce){let ne=ie.isScene===!0?ie.overrideMaterial:null;for(let fe=0,Re=O.length;fe<Re;fe++){let De=O[fe],ze=De.object,Ve=De.geometry,Je=ne===null?De.material:ne,We=De.group;ze.layers.test(ce.layers)&&be(ze,ie,ce,Ve,Je,We)}}function be(O,ie,ce,ne,fe,Re){O.onBeforeRender(x,ie,ce,ne,fe,Re),O.modelViewMatrix.multiplyMatrices(ce.matrixWorldInverse,O.matrixWorld),O.normalMatrix.getNormalMatrix(O.modelViewMatrix),fe.onBeforeRender(x,ie,ce,ne,O,Re),fe.transparent===!0&&fe.side===Yi&&fe.forceSinglePass===!1?(fe.side=wi,fe.needsUpdate=!0,x.renderBufferDirect(ce,ie,ne,fe,O,Re),fe.side=Xs,fe.needsUpdate=!0,x.renderBufferDirect(ce,ie,ne,fe,O,Re),fe.side=Yi):x.renderBufferDirect(ce,ie,ne,fe,O,Re),O.onAfterRender(x,ie,ce,ne,fe,Re)}function Ie(O,ie,ce){ie.isScene!==!0&&(ie=xe);let ne=pe.get(O),fe=y.state.lights,Re=y.state.shadowsArray,De=fe.state.version,ze=q.getParameters(O,fe.state,Re,ie,ce),Ve=q.getProgramCacheKey(ze),Je=ne.programs;ne.environment=O.isMeshStandardMaterial?ie.environment:null,ne.fog=ie.fog,ne.envMap=(O.isMeshStandardMaterial?Xe:Ge).get(O.envMap||ne.environment),Je===void 0&&(O.addEventListener("dispose",Ce),Je=new Map,ne.programs=Je);let We=Je.get(Ve);if(We!==void 0){if(ne.currentProgram===We&&ne.lightsStateVersion===De)return Be(O,ze),We}else ze.uniforms=q.getUniforms(O),O.onBuild(ce,ze,x),O.onBeforeCompile(ze,x),We=q.acquireProgram(ze,Ve),Je.set(Ve,We),ne.uniforms=ze.uniforms;let Ye=ne.uniforms;(!O.isShaderMaterial&&!O.isRawShaderMaterial||O.clipping===!0)&&(Ye.clippingPlanes=G.uniform),Be(O,ze),ne.needsLights=Ht(O),ne.lightsStateVersion=De,ne.needsLights&&(Ye.ambientLightColor.value=fe.state.ambient,Ye.lightProbe.value=fe.state.probe,Ye.directionalLights.value=fe.state.directional,Ye.directionalLightShadows.value=fe.state.directionalShadow,Ye.spotLights.value=fe.state.spot,Ye.spotLightShadows.value=fe.state.spotShadow,Ye.rectAreaLights.value=fe.state.rectArea,Ye.ltc_1.value=fe.state.rectAreaLTC1,Ye.ltc_2.value=fe.state.rectAreaLTC2,Ye.pointLights.value=fe.state.point,Ye.pointLightShadows.value=fe.state.pointShadow,Ye.hemisphereLights.value=fe.state.hemi,Ye.directionalShadowMap.value=fe.state.directionalShadowMap,Ye.directionalShadowMatrix.value=fe.state.directionalShadowMatrix,Ye.spotShadowMap.value=fe.state.spotShadowMap,Ye.spotLightMatrix.value=fe.state.spotLightMatrix,Ye.spotLightMap.value=fe.state.spotLightMap,Ye.pointShadowMap.value=fe.state.pointShadowMap,Ye.pointShadowMatrix.value=fe.state.pointShadowMatrix);let rt=We.getUniforms(),dt=F1.seqWithValue(rt.seq,Ye);return ne.currentProgram=We,ne.uniformsList=dt,We}function Be(O,ie){let ce=pe.get(O);ce.outputColorSpace=ie.outputColorSpace,ce.instancing=ie.instancing,ce.instancingColor=ie.instancingColor,ce.skinning=ie.skinning,ce.morphTargets=ie.morphTargets,ce.morphNormals=ie.morphNormals,ce.morphColors=ie.morphColors,ce.morphTargetsCount=ie.morphTargetsCount,ce.numClippingPlanes=ie.numClippingPlanes,ce.numIntersection=ie.numClipIntersection,ce.vertexAlphas=ie.vertexAlphas,ce.vertexTangents=ie.vertexTangents,ce.toneMapping=ie.toneMapping}function nt(O,ie,ce,ne,fe){ie.isScene!==!0&&(ie=xe),Oe.resetTextureUnits();let Re=ie.fog,De=ne.isMeshStandardMaterial?ie.environment:null,ze=R===null?x.outputColorSpace:R.isXRRenderTarget===!0?R.texture.colorSpace:No,Ve=(ne.isMeshStandardMaterial?Xe:Ge).get(ne.envMap||De),Je=ne.vertexColors===!0&&!!ce.attributes.color&&ce.attributes.color.itemSize===4,We=!!ce.attributes.tangent&&(!!ne.normalMap||ne.anisotropy>0),Ye=!!ce.morphAttributes.position,rt=!!ce.morphAttributes.normal,dt=!!ce.morphAttributes.color,qt=S0;ne.toneMapped&&(R===null||R.isXRRenderTarget===!0)&&(qt=x.toneMapping);let sn=ce.morphAttributes.position||ce.morphAttributes.normal||ce.morphAttributes.color,vt=sn!==void 0?sn.length:0,Ze=pe.get(ne),ki=y.state.lights;if(ee===!0&&(Q===!0||O!==M)){let ln=O===M&&ne.id===L;G.setState(ne,O,ln)}let Et=!1;ne.version===Ze.__version?(Ze.needsLights&&Ze.lightsStateVersion!==ki.state.version||Ze.outputColorSpace!==ze||fe.isInstancedMesh&&Ze.instancing===!1||!fe.isInstancedMesh&&Ze.instancing===!0||fe.isSkinnedMesh&&Ze.skinning===!1||!fe.isSkinnedMesh&&Ze.skinning===!0||fe.isInstancedMesh&&Ze.instancingColor===!0&&fe.instanceColor===null||fe.isInstancedMesh&&Ze.instancingColor===!1&&fe.instanceColor!==null||Ze.envMap!==Ve||ne.fog===!0&&Ze.fog!==Re||Ze.numClippingPlanes!==void 0&&(Ze.numClippingPlanes!==G.numPlanes||Ze.numIntersection!==G.numIntersection)||Ze.vertexAlphas!==Je||Ze.vertexTangents!==We||Ze.morphTargets!==Ye||Ze.morphNormals!==rt||Ze.morphColors!==dt||Ze.toneMapping!==qt||Ae.isWebGL2===!0&&Ze.morphTargetsCount!==vt)&&(Et=!0):(Et=!0,Ze.__version=ne.version);let Zn=Ze.currentProgram;Et===!0&&(Zn=Ie(ne,ie,fe));let Ki=!1,pr=!1,Sr=!1,Dt=Zn.getUniforms(),ir=Ze.uniforms;if(we.useProgram(Zn.program)&&(Ki=!0,pr=!0,Sr=!0),ne.id!==L&&(L=ne.id,pr=!0),Ki||M!==O){Dt.setValue(W,"projectionMatrix",O.projectionMatrix),Dt.setValue(W,"viewMatrix",O.matrixWorldInverse);let ln=Dt.map.cameraPosition;ln!==void 0&&ln.setValue(W,_e.setFromMatrixPosition(O.matrixWorld)),Ae.logarithmicDepthBuffer&&Dt.setValue(W,"logDepthBufFC",2/(Math.log(O.far+1)/Math.LN2)),(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial)&&Dt.setValue(W,"isOrthographic",O.isOrthographicCamera===!0),M!==O&&(M=O,pr=!0,Sr=!0)}if(fe.isSkinnedMesh){Dt.setOptional(W,fe,"bindMatrix"),Dt.setOptional(W,fe,"bindMatrixInverse");let ln=fe.skeleton;ln&&(Ae.floatVertexTextures?(ln.boneTexture===null&&ln.computeBoneTexture(),Dt.setValue(W,"boneTexture",ln.boneTexture,Oe),Dt.setValue(W,"boneTextureSize",ln.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let Xr=ce.morphAttributes;if((Xr.position!==void 0||Xr.normal!==void 0||Xr.color!==void 0&&Ae.isWebGL2===!0)&&he.update(fe,ce,Zn),(pr||Ze.receiveShadow!==fe.receiveShadow)&&(Ze.receiveShadow=fe.receiveShadow,Dt.setValue(W,"receiveShadow",fe.receiveShadow)),ne.isMeshGouraudMaterial&&ne.envMap!==null&&(ir.envMap.value=Ve,ir.flipEnvMap.value=Ve.isCubeTexture&&Ve.isRenderTargetTexture===!1?-1:1),pr&&(Dt.setValue(W,"toneMappingExposure",x.toneMappingExposure),Ze.needsLights&&wt(ir,Sr),Re&&ne.fog===!0&&B.refreshFogUniforms(ir,Re),B.refreshMaterialUniforms(ir,ne,te,le,se),F1.upload(W,Ze.uniformsList,ir,Oe)),ne.isShaderMaterial&&ne.uniformsNeedUpdate===!0&&(F1.upload(W,Ze.uniformsList,ir,Oe),ne.uniformsNeedUpdate=!1),ne.isSpriteMaterial&&Dt.setValue(W,"center",fe.center),Dt.setValue(W,"modelViewMatrix",fe.modelViewMatrix),Dt.setValue(W,"normalMatrix",fe.normalMatrix),Dt.setValue(W,"modelMatrix",fe.matrixWorld),ne.isShaderMaterial||ne.isRawShaderMaterial){let ln=ne.uniformsGroups;for(let qo=0,Ud=ln.length;qo<Ud;qo++)if(Ae.isWebGL2){let bs=ln[qo];He.update(bs,Zn),He.bind(bs,Zn)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return Zn}function wt(O,ie){O.ambientLightColor.needsUpdate=ie,O.lightProbe.needsUpdate=ie,O.directionalLights.needsUpdate=ie,O.directionalLightShadows.needsUpdate=ie,O.pointLights.needsUpdate=ie,O.pointLightShadows.needsUpdate=ie,O.spotLights.needsUpdate=ie,O.spotLightShadows.needsUpdate=ie,O.rectAreaLights.needsUpdate=ie,O.hemisphereLights.needsUpdate=ie}function Ht(O){return O.isMeshLambertMaterial||O.isMeshToonMaterial||O.isMeshPhongMaterial||O.isMeshStandardMaterial||O.isShadowMaterial||O.isShaderMaterial&&O.lights===!0}this.getActiveCubeFace=function(){return A},this.getActiveMipmapLevel=function(){return I},this.getRenderTarget=function(){return R},this.setRenderTargetTextures=function(O,ie,ce){pe.get(O.texture).__webglTexture=ie,pe.get(O.depthTexture).__webglTexture=ce;let ne=pe.get(O);ne.__hasExternalTextures=!0,ne.__hasExternalTextures&&(ne.__autoAllocateDepthBuffer=ce===void 0,ne.__autoAllocateDepthBuffer||ve.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),ne.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(O,ie){let ce=pe.get(O);ce.__webglFramebuffer=ie,ce.__useDefaultFramebuffer=ie===void 0},this.setRenderTarget=function(O,ie=0,ce=0){R=O,A=ie,I=ce;let ne=!0,fe=null,Re=!1,De=!1;if(O){let Ve=pe.get(O);Ve.__useDefaultFramebuffer!==void 0?(we.bindFramebuffer(W.FRAMEBUFFER,null),ne=!1):Ve.__webglFramebuffer===void 0?Oe.setupRenderTarget(O):Ve.__hasExternalTextures&&Oe.rebindTextures(O,pe.get(O.texture).__webglTexture,pe.get(O.depthTexture).__webglTexture);let Je=O.texture;(Je.isData3DTexture||Je.isDataArrayTexture||Je.isCompressedArrayTexture)&&(De=!0);let We=pe.get(O).__webglFramebuffer;O.isWebGLCubeRenderTarget?(Array.isArray(We[ie])?fe=We[ie][ce]:fe=We[ie],Re=!0):Ae.isWebGL2&&O.samples>0&&Oe.useMultisampledRTT(O)===!1?fe=pe.get(O).__webglMultisampledFramebuffer:Array.isArray(We)?fe=We[ce]:fe=We,k.copy(O.viewport),F.copy(O.scissor),Z=O.scissorTest}else k.copy(j).multiplyScalar(te).floor(),F.copy(U).multiplyScalar(te).floor(),Z=V;if(we.bindFramebuffer(W.FRAMEBUFFER,fe)&&Ae.drawBuffers&&ne&&we.drawBuffers(O,fe),we.viewport(k),we.scissor(F),we.setScissorTest(Z),Re){let Ve=pe.get(O.texture);W.framebufferTexture2D(W.FRAMEBUFFER,W.COLOR_ATTACHMENT0,W.TEXTURE_CUBE_MAP_POSITIVE_X+ie,Ve.__webglTexture,ce)}else if(De){let Ve=pe.get(O.texture),Je=ie||0;W.framebufferTextureLayer(W.FRAMEBUFFER,W.COLOR_ATTACHMENT0,Ve.__webglTexture,ce||0,Je)}L=-1},this.readRenderTargetPixels=function(O,ie,ce,ne,fe,Re,De){if(!(O&&O.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ze=pe.get(O).__webglFramebuffer;if(O.isWebGLCubeRenderTarget&&De!==void 0&&(ze=ze[De]),ze){we.bindFramebuffer(W.FRAMEBUFFER,ze);try{let Ve=O.texture,Je=Ve.format,We=Ve.type;if(Je!==$s&&Te.convert(Je)!==W.getParameter(W.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Ye=We===Vp&&(ve.has("EXT_color_buffer_half_float")||Ae.isWebGL2&&ve.has("EXT_color_buffer_float"));if(We!==E0&&Te.convert(We)!==W.getParameter(W.IMPLEMENTATION_COLOR_READ_TYPE)&&!(We===x0&&(Ae.isWebGL2||ve.has("OES_texture_float")||ve.has("WEBGL_color_buffer_float")))&&!Ye){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}ie>=0&&ie<=O.width-ne&&ce>=0&&ce<=O.height-fe&&W.readPixels(ie,ce,ne,fe,Te.convert(Je),Te.convert(We),Re)}finally{let Ve=R!==null?pe.get(R).__webglFramebuffer:null;we.bindFramebuffer(W.FRAMEBUFFER,Ve)}}},this.copyFramebufferToTexture=function(O,ie,ce=0){let ne=Math.pow(2,-ce),fe=Math.floor(ie.image.width*ne),Re=Math.floor(ie.image.height*ne);Oe.setTexture2D(ie,0),W.copyTexSubImage2D(W.TEXTURE_2D,ce,0,0,O.x,O.y,fe,Re),we.unbindTexture()},this.copyTextureToTexture=function(O,ie,ce,ne=0){let fe=ie.image.width,Re=ie.image.height,De=Te.convert(ce.format),ze=Te.convert(ce.type);Oe.setTexture2D(ce,0),W.pixelStorei(W.UNPACK_FLIP_Y_WEBGL,ce.flipY),W.pixelStorei(W.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ce.premultiplyAlpha),W.pixelStorei(W.UNPACK_ALIGNMENT,ce.unpackAlignment),ie.isDataTexture?W.texSubImage2D(W.TEXTURE_2D,ne,O.x,O.y,fe,Re,De,ze,ie.image.data):ie.isCompressedTexture?W.compressedTexSubImage2D(W.TEXTURE_2D,ne,O.x,O.y,ie.mipmaps[0].width,ie.mipmaps[0].height,De,ie.mipmaps[0].data):W.texSubImage2D(W.TEXTURE_2D,ne,O.x,O.y,De,ze,ie.image),ne===0&&ce.generateMipmaps&&W.generateMipmap(W.TEXTURE_2D),we.unbindTexture()},this.copyTextureToTexture3D=function(O,ie,ce,ne,fe=0){if(x.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Re=O.max.x-O.min.x+1,De=O.max.y-O.min.y+1,ze=O.max.z-O.min.z+1,Ve=Te.convert(ne.format),Je=Te.convert(ne.type),We;if(ne.isData3DTexture)Oe.setTexture3D(ne,0),We=W.TEXTURE_3D;else if(ne.isDataArrayTexture)Oe.setTexture2DArray(ne,0),We=W.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}W.pixelStorei(W.UNPACK_FLIP_Y_WEBGL,ne.flipY),W.pixelStorei(W.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ne.premultiplyAlpha),W.pixelStorei(W.UNPACK_ALIGNMENT,ne.unpackAlignment);let Ye=W.getParameter(W.UNPACK_ROW_LENGTH),rt=W.getParameter(W.UNPACK_IMAGE_HEIGHT),dt=W.getParameter(W.UNPACK_SKIP_PIXELS),qt=W.getParameter(W.UNPACK_SKIP_ROWS),sn=W.getParameter(W.UNPACK_SKIP_IMAGES),vt=ce.isCompressedTexture?ce.mipmaps[0]:ce.image;W.pixelStorei(W.UNPACK_ROW_LENGTH,vt.width),W.pixelStorei(W.UNPACK_IMAGE_HEIGHT,vt.height),W.pixelStorei(W.UNPACK_SKIP_PIXELS,O.min.x),W.pixelStorei(W.UNPACK_SKIP_ROWS,O.min.y),W.pixelStorei(W.UNPACK_SKIP_IMAGES,O.min.z),ce.isDataTexture||ce.isData3DTexture?W.texSubImage3D(We,fe,ie.x,ie.y,ie.z,Re,De,ze,Ve,Je,vt.data):ce.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),W.compressedTexSubImage3D(We,fe,ie.x,ie.y,ie.z,Re,De,ze,Ve,vt.data)):W.texSubImage3D(We,fe,ie.x,ie.y,ie.z,Re,De,ze,Ve,Je,vt),W.pixelStorei(W.UNPACK_ROW_LENGTH,Ye),W.pixelStorei(W.UNPACK_IMAGE_HEIGHT,rt),W.pixelStorei(W.UNPACK_SKIP_PIXELS,dt),W.pixelStorei(W.UNPACK_SKIP_ROWS,qt),W.pixelStorei(W.UNPACK_SKIP_IMAGES,sn),fe===0&&ne.generateMipmaps&&W.generateMipmap(We),we.unbindTexture()},this.initTexture=function(O){O.isCubeTexture?Oe.setTextureCube(O,0):O.isData3DTexture?Oe.setTexture3D(O,0):O.isDataArrayTexture||O.isCompressedArrayTexture?Oe.setTexture2DArray(O,0):Oe.setTexture2D(O,0),we.unbindTexture()},this.resetState=function(){A=0,I=0,R=null,we.reset(),Se.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Ja}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===Mn?rd:wme}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===rd?Mn:No}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(e){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=e}},tk=class extends ek{};tk.prototype.isWebGL1Renderer=!0;var k0=class extends od{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new un(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new un(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Sme,this.normalScale=new Qt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}};function y0(i,e,t){return Pme(i)?new i.constructor(i.subarray(e,t!==void 0?t:i.length)):i.slice(e,t)}function c_(i,e,t){return!i||!t&&i.constructor===e?i:typeof e.BYTES_PER_ELEMENT=="number"?new e(i):Array.prototype.slice.call(i)}function Pme(i){return ArrayBuffer.isView(i)&&!(i instanceof DataView)}var W1=class{constructor(e,t,n,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,n=this._cachedIndex,r=t[n],s=t[n-1];n:{e:{let o;t:{r:if(!(e<r)){for(let a=n+2;;){if(r===void 0){if(e<s)break r;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===a)break;if(s=r,r=t[++n],e<r)break e}o=t.length;break t}if(!(e>=s)){let a=t[1];e<a&&(n=2,s=a);for(let l=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(r=s,s=t[--n-1],e>=s)break e}o=n,n=0;break t}break n}for(;n<o;){let a=n+o>>>1;e<t[a]?o=a:n=a+1}if(r=t[n],s=t[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(r===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,r)}return this.interpolate_(n,s,e,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,s=e*r;for(let o=0;o!==r;++o)t[o]=n[s+o];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},nk=class extends W1{constructor(e,t,n,r){super(e,t,n,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:E5e,endingEnd:E5e}}intervalChanged_(e,t,n){let r=this.parameterPositions,s=e-2,o=e+1,a=r[s],l=r[o];if(a===void 0)switch(this.getSettings_().endingStart){case A5e:s=e,a=2*t-n;break;case M5e:s=r.length-2,a=t+r[s]-r[s+1];break;default:s=e,a=n}if(l===void 0)switch(this.getSettings_().endingEnd){case A5e:o=e,l=2*n-t;break;case M5e:o=1,l=n+r[1]-r[0];break;default:o=e-1,l=t}let c=(n-t)*.5,d=this.valueSize;this._weightPrev=c/(t-a),this._weightNext=c/(l-n),this._offsetPrev=s*d,this._offsetNext=o*d}interpolate_(e,t,n,r){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,c=l-a,d=this._offsetPrev,u=this._offsetNext,p=this._weightPrev,v=this._weightNext,_=(n-t)/(r-t),b=_*_,y=b*_,g=-p*y+2*p*b-p*_,w=(1+p)*y+(-1.5-2*p)*b+(-.5+p)*_+1,x=(-1-v)*y+(1.5+v)*b+.5*_,S=v*y-v*b;for(let A=0;A!==a;++A)s[A]=g*o[d+A]+w*o[c+A]+x*o[l+A]+S*o[u+A];return s}},rk=class extends W1{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,c=l-a,d=(n-t)/(r-t),u=1-d;for(let p=0;p!==a;++p)s[p]=o[c+p]*u+o[l+p]*d;return s}},ik=class extends W1{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e){return this.copySampleValue_(e-1)}},Js=class{constructor(e,t,n,r){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=c_(t,this.TimeBufferType),this.values=c_(n,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(e){let t=e.constructor,n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:c_(e.times,Array),values:c_(e.values,Array)};let r=e.getInterpolation();r!==e.DefaultInterpolation&&(n.interpolation=r)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new ik(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new rk(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new nk(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case d_:t=this.InterpolantFactoryMethodDiscrete;break;case u_:t=this.InterpolantFactoryMethodLinear;break;case iM:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){let n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return d_;case this.InterpolantFactoryMethodLinear:return u_;case this.InterpolantFactoryMethodSmooth:return iM}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){let t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]+=e}return this}scale(e){if(e!==1){let t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]*=e}return this}trim(e,t){let n=this.times,r=n.length,s=0,o=r-1;for(;s!==r&&n[s]<e;)++s;for(;o!==-1&&n[o]>t;)--o;if(++o,s!==0||o!==r){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=y0(n,s,o),this.values=y0(this.values,s*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,r=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){let l=n[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(r!==void 0&&Pme(r))for(let a=0,l=r.length;a!==l;++a){let c=r[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){let e=y0(this.times),t=y0(this.values),n=this.getValueSize(),r=this.getInterpolation()===iM,s=e.length-1,o=1;for(let a=1;a<s;++a){let l=!1,c=e[a],d=e[a+1];if(c!==d&&(a!==1||c!==e[0]))if(r)l=!0;else{let u=a*n,p=u-n,v=u+n;for(let _=0;_!==n;++_){let b=t[u+_];if(b!==t[p+_]||b!==t[v+_]){l=!0;break}}}if(l){if(a!==o){e[o]=e[a];let u=a*n,p=o*n;for(let v=0;v!==n;++v)t[p+v]=t[u+v]}++o}}if(s>0){e[o]=e[s];for(let a=s*n,l=o*n,c=0;c!==n;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=y0(e,0,o),this.values=y0(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=y0(this.times,0),t=y0(this.values,0),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Js.prototype.TimeBufferType=Float32Array;Js.prototype.ValueBufferType=Float32Array;Js.prototype.DefaultInterpolation=u_;var ld=class extends Js{};ld.prototype.ValueTypeName="bool";ld.prototype.ValueBufferType=Array;ld.prototype.DefaultInterpolation=d_;ld.prototype.InterpolantFactoryMethodLinear=void 0;ld.prototype.InterpolantFactoryMethodSmooth=void 0;var sk=class extends Js{};sk.prototype.ValueTypeName="color";var ok=class extends Js{};ok.prototype.ValueTypeName="number";var ak=class extends W1{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(r-t),c=e*a;for(let d=c+a;c!==d;c+=4)M0.slerpFlat(s,0,o,c-a,o,c,l);return s}},zp=class extends Js{InterpolantFactoryMethodLinear(e){return new ak(this.times,this.values,this.getValueSize(),e)}};zp.prototype.ValueTypeName="quaternion";zp.prototype.DefaultInterpolation=u_;zp.prototype.InterpolantFactoryMethodSmooth=void 0;var cd=class extends Js{};cd.prototype.ValueTypeName="string";cd.prototype.ValueBufferType=Array;cd.prototype.DefaultInterpolation=d_;cd.prototype.InterpolantFactoryMethodLinear=void 0;cd.prototype.InterpolantFactoryMethodSmooth=void 0;var lk=class extends Js{};lk.prototype.ValueTypeName="vector";var ck=class{constructor(e,t,n){let r=this,s=!1,o=0,a=0,l,c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(d){a++,s===!1&&r.onStart!==void 0&&r.onStart(d,o,a),s=!0},this.itemEnd=function(d){o++,r.onProgress!==void 0&&r.onProgress(d,o,a),o===a&&(s=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(d){r.onError!==void 0&&r.onError(d)},this.resolveURL=function(d){return l?l(d):d},this.setURLModifier=function(d){return l=d,this},this.addHandler=function(d,u){return c.push(d,u),this},this.removeHandler=function(d){let u=c.indexOf(d);return u!==-1&&c.splice(u,2),this},this.getHandler=function(d){for(let u=0,p=c.length;u<p;u+=2){let v=c[u],_=c[u+1];if(v.global&&(v.lastIndex=0),v.test(d))return _}return null}}},Tze=new ck,dk=class{constructor(e){this.manager=e!==void 0?e:Tze,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let n=this;return new Promise(function(r,s){n.load(e,r,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}};dk.DEFAULT_MATERIAL_NAME="__DEFAULT";var pk="\\[\\]\\.:\\/",Ize=new RegExp("["+pk+"]","g"),vk="[^"+pk+"]",Rze="[^"+pk.replace("\\.","")+"]",Cze=/((?:WC+[\/:])*)/.source.replace("WC",vk),Pze=/(WCOD+)?/.source.replace("WCOD",Rze),Lze=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",vk),Bze=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",vk),Oze=new RegExp("^"+Cze+Pze+Lze+Bze+"$"),Nze=["material","materials","bones","map"],uk=class{constructor(e,t,n){let r=n||An.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=n.length;r!==s;++r)n[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},An=class i{constructor(e,t,n){this.path=t,this.parsedPath=n||i.parseTrackName(t),this.node=i.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new i.Composite(e,t,n):new i(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Ize,"")}static parseTrackName(e){let t=Oze.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=n.nodeName.substring(r+1);Nze.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(s){for(let o=0;o<s.length;o++){let a=s[o];if(a.name===t||a.uuid===t)return a;let l=n(a.children);if(l)return l}return null},r=n(e.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)e[t++]=n[r]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,n=t.objectName,r=t.propertyName,s=t.propertyIndex;if(e||(e=i.findNode(this.rootNode,t.nodeName),this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(n){let c=t.objectIndex;switch(n){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let d=0;d<e.length;d++)if(e[d].name===c){c=d;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}e=e.material.map;break;default:if(e[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[n]}if(c!==void 0){if(e[c]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[c]}}let o=e[r];if(o===void 0){let c=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+c+"."+r+" but it wasn't found.",e);return}let a=this.Versioning.None;this.targetObject=e,e.needsUpdate!==void 0?a=this.Versioning.NeedsUpdate:e.matrixWorldNeedsUpdate!==void 0&&(a=this.Versioning.MatrixWorldNeedsUpdate);let l=this.BindingType.Direct;if(s!==void 0){if(r==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}l=this.BindingType.ArrayElement,this.resolvedProperty=o,this.propertyIndex=s}else o.fromArray!==void 0&&o.toArray!==void 0?(l=this.BindingType.HasFromToArray,this.resolvedProperty=o):Array.isArray(o)?(l=this.BindingType.EntireArray,this.resolvedProperty=o):this.propertyName=r;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};An.Composite=uk;An.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};An.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};An.prototype.GetterByBindingType=[An.prototype._getValue_direct,An.prototype._getValue_array,An.prototype._getValue_arrayElement,An.prototype._getValue_toArray];An.prototype.SetterByBindingTypeAndVersioning=[[An.prototype._setValue_direct,An.prototype._setValue_direct_setNeedsUpdate,An.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[An.prototype._setValue_array,An.prototype._setValue_array_setNeedsUpdate,An.prototype._setValue_array_setMatrixWorldNeedsUpdate],[An.prototype._setValue_arrayElement,An.prototype._setValue_arrayElement_setNeedsUpdate,An.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[An.prototype._setValue_fromArray,An.prototype._setValue_fromArray_setNeedsUpdate,An.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var Ian=new Float32Array(1);typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:fk}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=fk);function wk(i,e,t,n,r,s,o,a){let l=(R,L,M,k)=>[new Qt(R/o,1-k/a),new Qt(M/o,1-k/a),new Qt(M/o,1-L/a),new Qt(R/o,1-L/a)],c=l(e+s,t,e+n+s,t+s),d=l(e+n+s,t,e+n*2+s,t+s),u=l(e,t+s,e+s,t+s+r),p=l(e+s,t+s,e+n+s,t+s+r),v=l(e+n+s,t+s,e+n+s*2,t+r+s),_=l(e+n+s*2,t+s,e+n*2+s*2,t+r+s),b=i.attributes.uv,y=[v[3],v[2],v[0],v[1]],g=[u[3],u[2],u[0],u[1]],w=[c[3],c[2],c[0],c[1]],x=[d[0],d[1],d[3],d[2]],S=[p[3],p[2],p[0],p[1]],A=[_[3],_[2],_[0],_[1]],I=[];for(let R of[y,g,w,x,S,A])for(let L of R)I.push(L.x,L.y);b.set(new Float32Array(I)),b.needsUpdate=!0}function vs(i,e,t,n,r,s){wk(i,e,t,n,r,s,64,64)}function gk(i,e,t,n,r,s){wk(i,e,t,n,r,s,64,32)}var el=class extends ur{constructor(e,t){super(),Object.defineProperty(this,"innerLayer",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"outerLayer",{enumerable:!0,configurable:!0,writable:!0,value:t}),e.name="inner",t.name="outer"}},_k=class extends ur{constructor(){super(),Object.defineProperty(this,"head",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"body",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rightArm",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leftArm",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rightLeg",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leftLeg",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"modelListeners",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"slim",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"_map",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"layer1Material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"layer1MaterialBiased",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"layer2Material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"layer2MaterialBiased",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.layer1Material=new k0({side:Xs}),this.layer2Material=new k0({side:Yi,transparent:!0,alphaTest:1e-5}),this.layer1MaterialBiased=this.layer1Material.clone(),this.layer1MaterialBiased.polygonOffset=!0,this.layer1MaterialBiased.polygonOffsetFactor=1,this.layer1MaterialBiased.polygonOffsetUnits=1,this.layer2MaterialBiased=this.layer2Material.clone(),this.layer2MaterialBiased.polygonOffset=!0,this.layer2MaterialBiased.polygonOffsetFactor=1,this.layer2MaterialBiased.polygonOffsetUnits=1;let e=new Gn(8,8,8);vs(e,0,0,8,8,8);let t=new hn(e,this.layer1Material),n=new Gn(9,9,9);vs(n,32,0,8,8,8);let r=new hn(n,this.layer2Material);this.head=new el(t,r),this.head.name="head",this.head.add(t,r),t.position.y=4,r.position.y=4,this.add(this.head);let s=new Gn(8,12,4);vs(s,16,16,8,12,4);let o=new hn(s,this.layer1Material),a=new Gn(8.5,12.5,4.5);vs(a,16,32,8,12,4);let l=new hn(a,this.layer2Material);this.body=new el(o,l),this.body.name="body",this.body.add(o,l),this.body.position.y=-6,this.add(this.body);let c=new Gn,d=new hn(c,this.layer1MaterialBiased);this.modelListeners.push(()=>{d.scale.x=this.slim?3:4,d.scale.y=12,d.scale.z=4,vs(c,40,16,this.slim?3:4,12,4)});let u=new Gn,p=new hn(u,this.layer2MaterialBiased);this.modelListeners.push(()=>{p.scale.x=this.slim?3.5:4.5,p.scale.y=12.5,p.scale.z=4.5,vs(u,40,32,this.slim?3:4,12,4)});let v=new ur;v.add(d,p),this.modelListeners.push(()=>{v.position.x=this.slim?-.5:-1}),v.position.y=-4,this.rightArm=new el(d,p),this.rightArm.name="rightArm",this.rightArm.add(v),this.rightArm.position.x=-5,this.rightArm.position.y=-2,this.add(this.rightArm);let _=new Gn,b=new hn(_,this.layer1MaterialBiased);this.modelListeners.push(()=>{b.scale.x=this.slim?3:4,b.scale.y=12,b.scale.z=4,vs(_,32,48,this.slim?3:4,12,4)});let y=new Gn,g=new hn(y,this.layer2MaterialBiased);this.modelListeners.push(()=>{g.scale.x=this.slim?3.5:4.5,g.scale.y=12.5,g.scale.z=4.5,vs(y,48,48,this.slim?3:4,12,4)});let w=new ur;w.add(b,g),this.modelListeners.push(()=>{w.position.x=this.slim?.5:1}),w.position.y=-4,this.leftArm=new el(b,g),this.leftArm.name="leftArm",this.leftArm.add(w),this.leftArm.position.x=5,this.leftArm.position.y=-2,this.add(this.leftArm);let x=new Gn(4,12,4);vs(x,0,16,4,12,4);let S=new hn(x,this.layer1MaterialBiased),A=new Gn(4.5,12.5,4.5);vs(A,0,32,4,12,4);let I=new hn(A,this.layer2MaterialBiased),R=new ur;R.add(S,I),R.position.y=-6,this.rightLeg=new el(S,I),this.rightLeg.name="rightLeg",this.rightLeg.add(R),this.rightLeg.position.x=-1.9,this.rightLeg.position.y=-12,this.rightLeg.position.z=-.1,this.add(this.rightLeg);let L=new Gn(4,12,4);vs(L,16,48,4,12,4);let M=new hn(L,this.layer1MaterialBiased),k=new Gn(4.5,12.5,4.5);vs(k,0,48,4,12,4);let F=new hn(k,this.layer2MaterialBiased),Z=new ur;Z.add(M,F),Z.position.y=-6,this.leftLeg=new el(M,F),this.leftLeg.name="leftLeg",this.leftLeg.add(Z),this.leftLeg.position.x=1.9,this.leftLeg.position.y=-12,this.leftLeg.position.z=-.1,this.add(this.leftLeg),this.modelType="default"}get map(){return this._map}set map(e){this._map=e,this.layer1Material.map=e,this.layer1Material.needsUpdate=!0,this.layer1MaterialBiased.map=e,this.layer1MaterialBiased.needsUpdate=!0,this.layer2Material.map=e,this.layer2Material.needsUpdate=!0,this.layer2MaterialBiased.map=e,this.layer2MaterialBiased.needsUpdate=!0}get modelType(){return this.slim?"slim":"default"}set modelType(e){this.slim=e==="slim",this.modelListeners.forEach(t=>t())}getBodyParts(){return this.children.filter(e=>e instanceof el)}setInnerLayerVisible(e){this.getBodyParts().forEach(t=>t.innerLayer.visible=e)}setOuterLayerVisible(e){this.getBodyParts().forEach(t=>t.outerLayer.visible=e)}resetJoints(){this.head.rotation.set(0,0,0),this.leftArm.rotation.set(0,0,0),this.rightArm.rotation.set(0,0,0),this.leftLeg.rotation.set(0,0,0),this.rightLeg.rotation.set(0,0,0),this.body.rotation.set(0,0,0),this.head.position.y=0,this.body.position.y=-6,this.body.position.z=0,this.rightArm.position.x=-5,this.rightArm.position.y=-2,this.rightArm.position.z=0,this.leftArm.position.x=5,this.leftArm.position.y=-2,this.leftArm.position.z=0,this.rightLeg.position.x=-1.9,this.rightLeg.position.y=-12,this.rightLeg.position.z=-.1,this.leftLeg.position.x=1.9,this.leftLeg.position.y=-12,this.leftLeg.position.z=-.1}},yk=class extends ur{constructor(){super(),Object.defineProperty(this,"cape",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.material=new k0({side:Yi,transparent:!0,alphaTest:1e-5});let e=new Gn(10,16,1);gk(e,0,0,10,16,1),this.cape=new hn(e,this.material),this.cape.position.y=-8,this.cape.position.z=.5,this.add(this.cape)}get map(){return this.material.map}set map(e){this.material.map=e,this.material.needsUpdate=!0}},bk=class extends ur{constructor(){super(),Object.defineProperty(this,"leftWing",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rightWing",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.material=new k0({side:Yi,transparent:!0,alphaTest:1e-5});let e=new Gn(12,22,4);gk(e,22,0,10,20,2);let t=new hn(e,this.material);t.position.x=-5,t.position.y=-10,t.position.z=-1,this.leftWing=new ur,this.leftWing.add(t),this.add(this.leftWing);let n=new Gn(12,22,4);gk(n,22,0,10,20,2);let r=new hn(n,this.material);r.scale.x=-1,r.position.x=5,r.position.y=-10,r.position.z=-1,this.rightWing=new ur,this.rightWing.add(r),this.add(this.rightWing),this.leftWing.position.x=5,this.leftWing.rotation.x=.2617994,this.resetJoints()}resetJoints(){this.leftWing.rotation.y=.01,this.leftWing.rotation.z=.2617994,this.updateRightWing()}updateRightWing(){this.rightWing.position.x=-this.leftWing.position.x,this.rightWing.position.y=this.leftWing.position.y,this.rightWing.rotation.x=this.leftWing.rotation.x,this.rightWing.rotation.y=-this.leftWing.rotation.y,this.rightWing.rotation.z=-this.leftWing.rotation.z}get map(){return this.material.map}set map(e){this.material.map=e,this.material.needsUpdate=!0}},xk=class extends ur{constructor(){super(),Object.defineProperty(this,"rightEar",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leftEar",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.material=new k0({side:Xs});let e=new Gn(8,8,4/3);wk(e,0,0,6,6,1,14,7),this.rightEar=new hn(e,this.material),this.rightEar.name="rightEar",this.rightEar.position.x=-6,this.add(this.rightEar),this.leftEar=new hn(e,this.material),this.leftEar.name="leftEar",this.leftEar.position.x=6,this.add(this.leftEar)}get map(){return this.material.map}set map(e){this.material.map=e,this.material.needsUpdate=!0}},Lme=10.8*Math.PI/180,$1=class extends ur{constructor(){super(),Object.defineProperty(this,"skin",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cape",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"elytra",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"ears",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.skin=new _k,this.skin.name="skin",this.skin.position.y=8,this.add(this.skin),this.cape=new yk,this.cape.name="cape",this.cape.position.y=8,this.cape.position.z=-2,this.cape.rotation.x=Lme,this.cape.rotation.y=Math.PI,this.add(this.cape),this.elytra=new bk,this.elytra.name="elytra",this.elytra.position.y=8,this.elytra.position.z=-2,this.elytra.visible=!1,this.add(this.elytra),this.ears=new xk,this.ears.name="ears",this.ears.position.y=10,this.ears.position.z=2/3,this.ears.visible=!1,this.skin.head.add(this.ears)}get backEquipment(){return this.cape.visible?"cape":this.elytra.visible?"elytra":null}set backEquipment(e){this.cape.visible=e==="cape",this.elytra.visible=e==="elytra"}resetJoints(){this.skin.resetJoints(),this.cape.rotation.x=Lme,this.cape.position.y=8,this.cape.position.z=-2,this.elytra.position.y=8,this.elytra.position.z=-2,this.elytra.rotation.x=0,this.elytra.resetJoints()}};f();m();h();f();m();h();var I_=class{constructor(){Object.defineProperty(this,"speed",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"paused",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"progress",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"currentId",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"progress0",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"animationObjects",{enumerable:!0,configurable:!0,writable:!0,value:new Map})}update(e,t){if(this.paused)return;let n=t*this.speed;this.animate(e,n),this.animationObjects.forEach((r,s)=>{let o=this.progress0.get(s);r(e,this.progress-o,s)}),this.progress+=n}addAnimation(e){let t=this.currentId++;return this.progress0.set(t,this.progress),this.animationObjects.set(t,e),t}removeAnimation(e){e!=null&&(this.animationObjects.delete(e),this.progress0.delete(e))}};f();m();h();f();m();h();var Dze=Object.defineProperty,Uze=(i,e,t)=>e in i?Dze(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,kn=(i,e,t)=>(Uze(i,typeof e!="symbol"?e+"":e,t),t);function Sk(i){let e=[i];if(i.extra&&i.extra.length!==0)for(let t of i.extra)e.push(...Sk(t));return e}var xt=class{constructor(i,e,t,n,r,s){this.key=i,this.value=e,this.name=t,this.code=n,this.cssForeground=r,this.cssBackground=s}applyToStyle(i){i[this.key]=this.value}matchStyle(i){return i[this.key]===this.value}static fromCode(i){let t="0123456789abcdefklmnor".indexOf(i);if(t)return this.list[t]}toString(){return`${xt.CONTROL_STRING}${this.code}`}},Tn=xt;kn(Tn,"CONTROL_STRING","\xA7");kn(Tn,"BLACK",new xt("color","black","BLACK","0",{color:"#000000"},{color:"#000000"}));kn(Tn,"DARK_BLUE",new xt("color","dark_blue","DARK_BLUE","1",{color:"#0000AA"},{color:"#00002A"}));kn(Tn,"DARK_GREEN",new xt("color","dark_green","DARK_GREEN","2",{color:"#00AA00"},{color:"#002A00"}));kn(Tn,"DARK_AQUA",new xt("color","dark_aqua","DARK_AQUA","3",{color:"#00AAAA"},{color:"#002A2A"}));kn(Tn,"DARK_RED",new xt("color","dark_red","DARK_RED","4",{color:"#AA0000"},{color:"#2A0000"}));kn(Tn,"DARK_PURPLE",new xt("color","dark_purple","DARK_PURPLE","5",{color:"#AA00AA"},{color:"#2A002A"}));kn(Tn,"GOLD",new xt("color","gold","GOLD","6",{color:"#FFAA00"},{color:"#2A2A00"}));kn(Tn,"GRAY",new xt("color","gray","GRAY","7",{color:"#AAAAAA"},{color:"#2A2A2A"}));kn(Tn,"DARK_GRAY",new xt("color","dark_gray","DARK_GRAY","8",{color:"#555555"},{color:"#151515"}));kn(Tn,"BLUE",new xt("color","blue","BLUE","9",{color:"#5555FF"},{color:"#15153F"}));kn(Tn,"GREEN",new xt("color","green","GREEN","a",{color:"#55FF55"},{color:"#153F15"}));kn(Tn,"AQUA",new xt("color","aqua","AQUA","b",{color:"#55FFFF"},{color:"#153F3F"}));kn(Tn,"RED",new xt("color","red","RED","c",{color:"#FF5555"},{color:"#3F1515"}));kn(Tn,"LIGHT_PURPLE",new xt("color","light_purple","LIGHT_PURPLE","d",{color:"#FF55FF"},{color:"#3F153F"}));kn(Tn,"YELLOW",new xt("color","yellow","YELLOW","e",{color:"#FFFF55"},{color:"#3F3F15"}));kn(Tn,"WHITE",new xt("color","white","WHITE","f",{color:"#FFFFFF"},{color:"#3F3F3F"}));kn(Tn,"OBFUSCATED",new xt("obfuscated",!0,"OBFUSCATED","k",{}));kn(Tn,"BOLD",new xt("bold",!0,"BOLD","l",{"font-weight":"bold"}));kn(Tn,"STRIKETHROUGH",new xt("strikethrough",!0,"STRIKETHROUGH","m",{"text-decoration":"line-through"}));kn(Tn,"UNDERLINE",new xt("underlined",!0,"UNDERLINE","n",{"text-decoration":"underline"}));kn(Tn,"ITALIC",new xt("italic",!0,"ITALIC","o",{"font-style":"italic"}));kn(Tn,"RESET",{name:"RESET",code:"r",applyToStyle(i){i.bold=!1,i.strikethrough=!1,i.underlined=!1,i.italic=!1,i.obfuscated=!1,i.color=void 0},matchStyle(i){return!1},cssBackground:{},cssForeground:{},toString(){return`${xt.CONTROL_STRING}r`}});kn(Tn,"list",[xt.BLACK,xt.DARK_BLUE,xt.DARK_GREEN,xt.DARK_AQUA,xt.DARK_RED,xt.DARK_PURPLE,xt.GOLD,xt.GRAY,xt.DARK_GRAY,xt.BLUE,xt.GREEN,xt.AQUA,xt.RED,xt.LIGHT_PURPLE,xt.YELLOW,xt.WHITE,xt.OBFUSCATED,xt.BOLD,xt.STRIKETHROUGH,xt.UNDERLINE,xt.ITALIC,xt.RESET]);var Jp=Yr($m(),1);kk();var y2e=Yr(Gme(),1),fT=Yr(bp(),1);f();m();h();f();m();h();var J1=i=>Math.max(0,Math.min(1,i)),Wme=(i,e,t)=>Math.max(e,Math.min(t,i)),Si=(i,e,t)=>i+(e-i)*t,oHe=i=>(i=(i+Math.PI)%(Math.PI*2),i<0&&(i+=Math.PI*2),i-Math.PI);function aHe(i){let e=i?.elytra;if(!e)return;if(typeof e.updateRightWing=="function"){e.updateRightWing();return}if(typeof e.updateRightWingRotation=="function"){e.updateRightWingRotation();return}let t=e.leftWing,n=e.rightWing;!t?.rotation||!n?.rotation||typeof n.rotation.copy=="function"&&(n.rotation.copy(t.rotation),n.rotation.z*=-1)}var $p=class extends I_{switchAnimationCallback;isRunning=!1;isMoving=!0;isCrouched=!1;moveAmount=0;runAmount=0;lookYaw=0;lookPitch=0;_dt=0;_phase=0;_idlePhase=0;_moveBlend=0;_runBlend=0;_crouchBlend=0;_lookYawBlend=0;_lookPitchBlend=0;_swingTime=null;_swingDuration=.25;_defaults=null;update(e,t){this._dt=t,super.update(e,t)}swingArm(){this._swingTime=0}resetLocomotion(){this._moveBlend=0,this._runBlend=0,this._crouchBlend=0,this._phase=0}_captureDefaults(e){let t=e?.skin;this._defaults={playerRot:e?.rotation?.clone?.(),bodyPos:t?.body?.position?.clone?.(),bodyRot:t?.body?.rotation?.clone?.(),leftArmPos:t?.leftArm?.position?.clone?.(),leftArmRot:t?.leftArm?.rotation?.clone?.(),rightArmPos:t?.rightArm?.position?.clone?.(),rightArmRot:t?.rightArm?.rotation?.clone?.(),leftLegPos:t?.leftLeg?.position?.clone?.(),leftLegRot:t?.leftLeg?.rotation?.clone?.(),rightLegPos:t?.rightLeg?.position?.clone?.(),rightLegRot:t?.rightLeg?.rotation?.clone?.(),headPos:t?.head?.position?.clone?.(),headRot:t?.head?.rotation?.clone?.(),capePos:e?.cape?.position?.clone?.(),capeRot:e?.cape?.rotation?.clone?.(),elytraPos:e?.elytra?.position?.clone?.(),elytraRot:e?.elytra?.rotation?.clone?.()}}_applyDefaults(e){let t=this._defaults;if(!t)return;let n=e?.skin,r=e?.cape,s=e?.elytra;t.playerRot&&e?.rotation&&e.rotation.copy(t.playerRot),t.bodyPos&&n?.body?.position&&n.body.position.copy(t.bodyPos),t.bodyRot&&n?.body?.rotation&&n.body.rotation.copy(t.bodyRot),t.leftArmPos&&n?.leftArm?.position&&n.leftArm.position.copy(t.leftArmPos),t.leftArmRot&&n?.leftArm?.rotation&&n.leftArm.rotation.copy(t.leftArmRot),t.rightArmPos&&n?.rightArm?.position&&n.rightArm.position.copy(t.rightArmPos),t.rightArmRot&&n?.rightArm?.rotation&&n.rightArm.rotation.copy(t.rightArmRot),t.leftLegPos&&n?.leftLeg?.position&&n.leftLeg.position.copy(t.leftLegPos),t.leftLegRot&&n?.leftLeg?.rotation&&n.leftLeg.rotation.copy(t.leftLegRot),t.rightLegPos&&n?.rightLeg?.position&&n.rightLeg.position.copy(t.rightLegPos),t.rightLegRot&&n?.rightLeg?.rotation&&n.rightLeg.rotation.copy(t.rightLegRot),t.headPos&&n?.head?.position&&n.head.position.copy(t.headPos),t.headRot&&n?.head?.rotation&&n.head.rotation.copy(t.headRot),t.capePos&&r?.position&&r.position.copy(t.capePos),t.capeRot&&r?.rotation&&r.rotation.copy(t.capeRot),t.elytraPos&&s?.position&&s.position.copy(t.elytraPos),t.elytraRot&&s?.rotation&&s.rotation.copy(t.elytraRot)}animate(e){let t=this._dt||0;this._defaults||this._captureDefaults(e),this._applyDefaults(e);let n=typeof this.moveAmount=="number"?this.moveAmount:this.isMoving?1:0,r=typeof this.runAmount=="number"?this.runAmount:this.isRunning?1:0,s=J1(n),o=J1(r),a=this.isCrouched?1:0,l=Math.min(1,t*8),c=Math.min(1,t*6),d=Math.min(1,t*7);this._moveBlend+=(s-this._moveBlend)*l,this._runBlend+=(o-this._runBlend)*c,this._crouchBlend+=(a-this._crouchBlend)*d;let u=J1(this._moveBlend),p=J1(this._runBlend),v=J1(this._crouchBlend),_=Si(8,10,p),b=Si(1,.55,v),y=_*b;this._phase+=t*y*u,this._phase+=t*y*u,this._idlePhase+=t*1.15;let g=this._phase+(p>.5?Math.PI*.5:0);if(this.switchAnimationCallback&&Math.abs(Math.sin(g))<.02){let M=this.switchAnimationCallback;this.switchAnimationCallback=null,M?.()}cHe(e,v);let w=80*Math.PI/180,x=75*Math.PI/180,S=Wme(oHe(this.lookYaw||0),-w,w),A=Wme(this.lookPitch||0,-x,x),I=Math.min(1,t*14);this._lookYawBlend+=(S-this._lookYawBlend)*I,this._lookPitchBlend+=(A-this._lookPitchBlend)*I,e?.skin?.head?.rotation&&(e.skin.head.rotation.y+=this._lookYawBlend,e.skin.head.rotation.x+=this._lookPitchBlend);let R=(1-u)*(1-.25*p);if(R>1e-4&&e?.skin){let L=Math.sin(this._idlePhase);e.skin.body.rotation.x+=L*.02*R,e.skin.head.rotation.x+=-L*.015*R,e.skin.leftArm.rotation.x+=L*.03*R,e.skin.rightArm.rotation.x+=-L*.03*R,e?.cape?.rotation&&(e.cape.rotation.x+=Math.sin(this._idlePhase*.7)*.03*R)}if(u>1e-4&&e?.skin){let L=Si(1,.85,v),M=Si(1,.7,v),k=Math.sin(g)*.5,F=Math.sin(g+Math.PI)*.5,Z=Math.cos(g+Math.PI)*1.3,D=Math.cos(g)*1.3;e.skin.leftLeg.rotation.x+=Si(k,Z,p)*u*L,e.skin.rightLeg.rotation.x+=Si(F,D,p)*u*L;let z=Math.sin(g+Math.PI)*.5,Y=Math.sin(g)*.5,le=Math.cos(g)*1.5,te=Math.cos(g+Math.PI)*1.5;e.skin.leftArm.rotation.x+=Si(z,le,p)*u*M,e.skin.rightArm.rotation.x+=Si(Y,te,p)*u*M;let re=Math.PI*.02,ae=Math.PI*.1,j=Si(re,ae,p),U=Math.cos(g)*.03+re,V=Math.cos(g+Math.PI)*.03-re,J=Math.cos(g)*.1+ae,ee=Math.cos(g+Math.PI)*.1-ae;e.skin.leftArm.rotation.z+=(Si(U,J,p)*u+j*.15*u)*M,e.skin.rightArm.rotation.z+=(Si(V,ee,p)*u-j*.15*u)*M,this._defaults?.playerRot&&(e.rotation.z=this._defaults.playerRot.z+Math.cos(g+Math.PI)*.01*p*u);let Q=Si(Math.PI*.06,Math.PI*.3,p),se=Si(Math.sin(g/1.5)*.06,Math.sin(g*2)*.1,p);e?.cape?.rotation&&(e.cape.rotation.x+=(Q+se)*u)}if(this._swingTime!==null){this._swingTime+=t;let L=Math.min(this._swingTime/this._swingDuration,1);lHe.animate(L,e,u>.2),L>=1&&(this._swingTime=null)}}},lHe={animate(i,e,t){if(!e?.skin?.rightArm?.rotation)return;let n=i*18;if(e.skin.rightArm.rotation.x=-.4537860552*2+2*Math.sin(n+Math.PI)*.3,!t){let r=.01*Math.PI+.06;e.skin.rightArm.rotation.z=-Math.cos(n)*.403+r,e.skin.body.rotation.y=-Math.cos(n)*.06,e.skin.leftArm.rotation.x=Math.sin(n+Math.PI)*.077,e.skin.leftArm.rotation.z=-Math.cos(n)*.015+.13-.05,e.skin.leftArm.position.z=Math.cos(n)*.3,e.skin.leftArm.position.x=5-Math.cos(n)*.05}}};function cHe(i,e){let t=i?.skin,n=i?.cape,r=i?.elytra;if(!t||!n)return;let s=J1(e),o=Math.abs(Math.sin(s*Math.PI/2));if(o<=1e-6)return;t.body.rotation.x+=.4537860552*o,t.body.position.z+=(1.3256181-3.4500310377)*o,t.body.position.y+=-2.103677462*o,n.position.y+=-1.851236166577372*o,n.rotation.x+=.294220265771*o,n.position.z+=(3.786619432-3.4500310377)*o,r?.position&&r.position.copy(n.position),r?.rotation&&r.rotation.copy(n.rotation),r?.rotation&&(r.rotation.x-=10.8*Math.PI/180),r?.leftWing?.rotation&&(r.leftWing.rotation.z=Si(.72,.26179944+.4582006,o)),aHe(i),t.head.position.y+=-3.618325234674*o;let a=.1*o,l=(3.618325234674-3.4500310377)*o,c=-2.53943318*o;t.leftArm.position.z+=l,t.rightArm.position.z+=l,t.leftArm.rotation.x+=.410367746202*o,t.rightArm.rotation.x+=.410367746202*o,t.leftArm.rotation.z+=a,t.rightArm.rotation.z+=-a,t.leftArm.position.y+=c,t.rightArm.position.y+=c,t.rightLeg.position.z+=-3.4500310377*o,t.leftLeg.position.z+=-3.4500310377*o}function Tk(i){let e=i.skin,t=[e.layer1Material,e.layer1MaterialBiased,e.layer2Material,e.layer2MaterialBiased];for(let n of t)n.transparent=!0,n.alphaTest=.1,n.depthWrite=!0}f();m();h();yt();function dHe(i,e){if(typeof document<"u"){let t=document.createElement("canvas");return t.width=i,t.height=e,t}return new OffscreenCanvas(i,e)}function uHe(i,e){let{depth:t,pixelSize:n}=e;if(i.width<=0||i.height<=0)throw new Error(`Invalid canvas dimensions: ${i.width}x${i.height}`);let s=i.getContext("2d").getImageData(0,0,i.width,i.height),{data:o}=s,a=i.width,l=i.height,c=t/2,d=n??1/Math.max(a,l),u=(R,L)=>{if(R<0||L<0||R>=a||L>=l)return!1;let M=(L*a+R)*4;return o[M+3]>128},p=[],v=[],_=[],b=[],y=0,g=(R,L,M,k,F,Z,D,z)=>(p.push(R,L,M),_.push(k,F),b.push(Z,D,z),y++),w=(R,L,M,k)=>{v.push(R,L,M,R,M,k)},x=(R,L)=>{let M=(R/a-.5)*d*a,k=-(L/l-.5)*d*l;return{x:M,y:k}},S=Array.from({length:l+1},()=>Array.from({length:a+1},()=>null)),A=Array.from({length:l+1},()=>Array.from({length:a+1},()=>null));for(let R=0;R<=l;R++)for(let L=0;L<=a;L++){let{x:M,y:k}=x(L-.5,R-.5),F=L/a,Z=R/l,D=!1,z=[[L-1,R-1],[L,R-1],[L-1,R],[L,R]];for(let[Y,le]of z)if(u(Y,le)){D=!0;break}D&&(S[R][L]=g(M,k,c,F,Z,0,0,1),A[R][L]=g(M,k,-c,F,Z,0,0,-1))}for(let R=0;R<l;R++)for(let L=0;L<a;L++){if(!u(L,R))continue;let M=S[R][L],k=S[R][L+1],F=S[R+1][L+1],Z=S[R+1][L],D=A[R][L],z=A[R][L+1],Y=A[R+1][L+1],le=A[R+1][L];M!==null&&k!==null&&F!==null&&Z!==null&&w(M,k,F,Z),D!==null&&z!==null&&Y!==null&&le!==null&&w(z,D,le,Y)}for(let R=0;R<l;R++)for(let L=0;L<a;L++){if(!u(L,R))continue;let M=(L+.5)/a,k=(R+.5)/l;if(!u(L-1,R)){let F=S[R][L],Z=S[R+1][L],D=A[R][L],z=A[R+1][L];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,-1,0,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,-1,0,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,-1,0,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,-1,0,0);w(Y,le,te,re)}}if(!u(L+1,R)){let F=S[R+1][L+1],Z=S[R][L+1],D=A[R+1][L+1],z=A[R][L+1];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,1,0,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,1,0,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,1,0,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,1,0,0);w(Y,le,te,re)}}if(!u(L,R-1)){let F=S[R][L],Z=S[R][L+1],D=A[R][L],z=A[R][L+1];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,0,-1,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,0,-1,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,0,-1,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,0,-1,0);w(Y,le,te,re)}}if(!u(L,R+1)){let F=S[R+1][L+1],Z=S[R+1][L],D=A[R+1][L+1],z=A[R+1][L];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,0,1,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,0,1,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,0,1,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,0,1,0);w(Y,le,te,re)}}}let I=new it;return I.setAttribute("position",new qe(p,3)),I.setAttribute("uv",new qe(_,2)),I.setAttribute("normal",new qe(b,3)),I.setIndex(v),I.computeVertexNormals(),{geometry:I,totalVertices:y,totalTriangles:v.length/3}}function fHe(i,e){let{u:t,v:n,sizeX:r,sizeY:s}=e,o=Math.max(1,Math.floor(r*i.image.width)),a=Math.max(1,Math.floor(s*i.image.height)),l=dHe(o,a),c=l.getContext("2d");if(!c)throw new Error("Failed to get 2d context for item texture canvas");return c.imageSmoothingEnabled=!1,c.drawImage(i.image,t*i.image.width,n*i.image.height,r*i.image.width,s*i.image.height,0,0,l.width,l.height),l}function jme(i,e,t={}){let{faceCamera:n=!1,use3D:r=!0,depth:s=.04}=t,{u:o,v:a,sizeX:l,sizeY:c}=e;if(n){let b=i.clone();b.flipY=!0,b.offset.set(o,1-a-c),b.repeat.set(l,c),b.needsUpdate=!0,b.magFilter=Qe,b.minFilter=Qe;let y=new ns({map:b,transparent:!0,alphaTest:.1});return{mesh:new Oi(y),itemsTexture:b,cleanup(){b.dispose()}}}if(r)try{let b=fHe(i,e),{geometry:y}=uHe(b,{depth:s}),g=new mn(b);g.magFilter=Qe,g.minFilter=Qe,g.wrapS=g.wrapT=gn,g.flipY=!1,g.needsUpdate=!0;let w=new Lr({map:g,side:cn,transparent:!0,alphaTest:.1});return{mesh:new je(y,w),itemsTexture:g,cleanup(){g.dispose(),y.dispose(),w.map&&w.map.dispose(),w.dispose()}}}catch(b){console.warn("Failed to create 3D item mesh, falling back to 2D:",b)}let d=i.clone();d.flipY=!0,d.offset.set(o,1-a-c),d.repeat.set(l,c),d.needsUpdate=!0,d.magFilter=Qe,d.minFilter=Qe;let u=d.clone();u.repeat.x*=-1,u.needsUpdate=!0,u.offset.set(o+l,1-a-c);let p=new Lr({map:d,transparent:!0,alphaTest:.1}),v=new Lr({map:u,transparent:!0,alphaTest:.1});return{mesh:new je(new nn(1,1,0),[new st({color:0}),new st({color:0}),new st({color:0}),new st({color:0}),p,v]),itemsTexture:d,itemsTextureFlipped:u,cleanup(){d.dispose(),u.dispose(),p.dispose(),v.dispose()}}}f();m();h();yt();f();m();h();f();m();h();yt();var $me=parseInt(bo.replace(/\D+/g,""));f();m();h();yt();var hHe=/^[og]\s*(.+)?/,mHe=/^mtllib /,pHe=/^usemtl /,vHe=/^usemap /,Xme=new K,Ik=new K,Yme=new K,Jme=new K,gs=new K;function gHe(){let i={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let n=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(r,s){let o=this._finalize(!1);o&&(o.inherited||o.groupCount<=0)&&this.materials.splice(o.index,1);let a={index:this.materials.length,name:r||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:o!==void 0?o.smooth:this.smooth,groupStart:o!==void 0?o.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){let c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(a),a},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(r){let s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),r&&this.materials.length>1)for(let o=this.materials.length-1;o>=0;o--)this.materials[o].groupCount<=0&&this.materials.splice(o,1);return r&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},n&&n.name&&typeof n.clone=="function"){let r=n.clone(0);r.inherited=!0,this.object.materials.push(r)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseNormalIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseUVIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/2)*2},addVertex:function(e,t,n){let r=this.vertices,s=this.object.geometry.vertices;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[n+0],r[n+1],r[n+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){let r=this.normals,s=this.object.geometry.normals;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[n+0],r[n+1],r[n+2])},addFaceNormal:function(e,t,n){let r=this.vertices,s=this.object.geometry.normals;Xme.fromArray(r,e),Ik.fromArray(r,t),Yme.fromArray(r,n),gs.subVectors(Yme,Ik),Jme.subVectors(Xme,Ik),gs.cross(Jme),gs.normalize(),s.push(gs.x,gs.y,gs.z),s.push(gs.x,gs.y,gs.z),s.push(gs.x,gs.y,gs.z)},addColor:function(e,t,n){let r=this.colors,s=this.object.geometry.colors;r[e]!==void 0&&s.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&s.push(r[t+0],r[t+1],r[t+2]),r[n]!==void 0&&s.push(r[n+0],r[n+1],r[n+2])},addUV:function(e,t,n){let r=this.uvs,s=this.object.geometry.uvs;s.push(r[e+0],r[e+1]),s.push(r[t+0],r[t+1]),s.push(r[n+0],r[n+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,r,s,o,a,l,c){let d=this.vertices.length,u=this.parseVertexIndex(e,d),p=this.parseVertexIndex(t,d),v=this.parseVertexIndex(n,d);if(this.addVertex(u,p,v),this.addColor(u,p,v),a!==void 0&&a!==""){let _=this.normals.length;u=this.parseNormalIndex(a,_),p=this.parseNormalIndex(l,_),v=this.parseNormalIndex(c,_),this.addNormal(u,p,v)}else this.addFaceNormal(u,p,v);if(r!==void 0&&r!==""){let _=this.uvs.length;u=this.parseUVIndex(r,_),p=this.parseUVIndex(s,_),v=this.parseUVIndex(o,_),this.addUV(u,p,v),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let n=0,r=e.length;n<r;n++){let s=this.parseVertexIndex(e[n],t);this.addVertexPoint(s),this.addColor(s)}},addLineGeometry:function(e,t){this.object.geometry.type="Line";let n=this.vertices.length,r=this.uvs.length;for(let s=0,o=e.length;s<o;s++)this.addVertexLine(this.parseVertexIndex(e[s],n));for(let s=0,o=t.length;s<o;s++)this.addUVLine(this.parseUVIndex(t[s],r))}};return i.startObject("",!1),i}var K1=class extends nr{constructor(e){super(e),this.materials=null}load(e,t,n,r){let s=this,o=new Br(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{t(s.parse(a))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},n,r)}setMaterials(e){return this.materials=e,this}parse(e){let t=new gHe;e.indexOf(`\r
8042
+ }`;function bze(i,e,t){let n=new E_,r=new Qt,s=new Qt,o=new kr,a=new YM({depthPacking:wNe}),l=new JM,c={},d=t.maxTextureSize,u={[Xs]:wi,[wi]:Xs,[Yi]:Yi},p=new Qa({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Qt},radius:{value:4}},vertexShader:_ze,fragmentShader:yze}),v=p.clone();v.defines.HORIZONTAL_PASS=1;let _=new ad;_.setAttribute("position",new ps(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let b=new hn(_,p),y=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=ume;let g=this.type;this.render=function(A,I,R){if(y.enabled===!1||y.autoUpdate===!1&&y.needsUpdate===!1||A.length===0)return;let L=i.getRenderTarget(),M=i.getActiveCubeFace(),k=i.getActiveMipmapLevel(),F=i.state;F.setBlending(w0),F.buffers.color.setClear(1,1,1,1),F.buffers.depth.setTest(!0),F.setScissorTest(!1);let Z=g!==Xa&&this.type===Xa,D=g===Xa&&this.type!==Xa;for(let z=0,Y=A.length;z<Y;z++){let le=A[z],te=le.shadow;if(te===void 0){console.warn("THREE.WebGLShadowMap:",le,"has no shadow.");continue}if(te.autoUpdate===!1&&te.needsUpdate===!1)continue;r.copy(te.mapSize);let re=te.getFrameExtents();if(r.multiply(re),s.copy(te.mapSize),(r.x>d||r.y>d)&&(r.x>d&&(s.x=Math.floor(d/re.x),r.x=s.x*re.x,te.mapSize.x=s.x),r.y>d&&(s.y=Math.floor(d/re.y),r.y=s.y*re.y,te.mapSize.y=s.y)),te.map===null||Z===!0||D===!0){let j=this.type!==Xa?{minFilter:ai,magFilter:ai}:{};te.map!==null&&te.map.dispose(),te.map=new Za(r.x,r.y,j),te.map.texture.name=le.name+".shadowMap",te.camera.updateProjectionMatrix()}i.setRenderTarget(te.map),i.clear();let ae=te.getViewportCount();for(let j=0;j<ae;j++){let U=te.getViewport(j);o.set(s.x*U.x,s.y*U.y,s.x*U.z,s.y*U.w),F.viewport(o),te.updateMatrices(le,j),n=te.getFrustum(),S(I,R,te.camera,le,this.type)}te.isPointLightShadow!==!0&&this.type===Xa&&w(te,R),te.needsUpdate=!1}g=this.type,y.needsUpdate=!1,i.setRenderTarget(L,M,k)};function w(A,I){let R=e.update(b);p.defines.VSM_SAMPLES!==A.blurSamples&&(p.defines.VSM_SAMPLES=A.blurSamples,v.defines.VSM_SAMPLES=A.blurSamples,p.needsUpdate=!0,v.needsUpdate=!0),A.mapPass===null&&(A.mapPass=new Za(r.x,r.y)),p.uniforms.shadow_pass.value=A.map.texture,p.uniforms.resolution.value=A.mapSize,p.uniforms.radius.value=A.radius,i.setRenderTarget(A.mapPass),i.clear(),i.renderBufferDirect(I,null,R,p,b,null),v.uniforms.shadow_pass.value=A.mapPass.texture,v.uniforms.resolution.value=A.mapSize,v.uniforms.radius.value=A.radius,i.setRenderTarget(A.map),i.clear(),i.renderBufferDirect(I,null,R,v,b,null)}function x(A,I,R,L){let M=null,k=R.isPointLight===!0?A.customDistanceMaterial:A.customDepthMaterial;if(k!==void 0)M=k;else if(M=R.isPointLight===!0?l:a,i.localClippingEnabled&&I.clipShadows===!0&&Array.isArray(I.clippingPlanes)&&I.clippingPlanes.length!==0||I.displacementMap&&I.displacementScale!==0||I.alphaMap&&I.alphaTest>0||I.map&&I.alphaTest>0){let F=M.uuid,Z=I.uuid,D=c[F];D===void 0&&(D={},c[F]=D);let z=D[Z];z===void 0&&(z=M.clone(),D[Z]=z),M=z}if(M.visible=I.visible,M.wireframe=I.wireframe,L===Xa?M.side=I.shadowSide!==null?I.shadowSide:I.side:M.side=I.shadowSide!==null?I.shadowSide:u[I.side],M.alphaMap=I.alphaMap,M.alphaTest=I.alphaTest,M.map=I.map,M.clipShadows=I.clipShadows,M.clippingPlanes=I.clippingPlanes,M.clipIntersection=I.clipIntersection,M.displacementMap=I.displacementMap,M.displacementScale=I.displacementScale,M.displacementBias=I.displacementBias,M.wireframeLinewidth=I.wireframeLinewidth,M.linewidth=I.linewidth,R.isPointLight===!0&&M.isMeshDistanceMaterial===!0){let F=i.properties.get(M);F.light=R}return M}function S(A,I,R,L,M){if(A.visible===!1)return;if(A.layers.test(I.layers)&&(A.isMesh||A.isLine||A.isPoints)&&(A.castShadow||A.receiveShadow&&M===Xa)&&(!A.frustumCulled||n.intersectsObject(A))){A.modelViewMatrix.multiplyMatrices(R.matrixWorldInverse,A.matrixWorld);let Z=e.update(A),D=A.material;if(Array.isArray(D)){let z=Z.groups;for(let Y=0,le=z.length;Y<le;Y++){let te=z[Y],re=D[te.materialIndex];if(re&&re.visible){let ae=x(A,re,L,M);i.renderBufferDirect(R,null,Z,ae,A,te)}}}else if(D.visible){let z=x(A,D,L,M);i.renderBufferDirect(R,null,Z,z,A,null)}}let F=A.children;for(let Z=0,D=F.length;Z<D;Z++)S(F[Z],I,R,L,M)}}function xze(i,e,t){let n=t.isWebGL2;function r(){let $=!1,Pe=new kr,ue=null,Ee=new kr(0,0,0,0);return{setMask:function(Ce){ue!==Ce&&!$&&(i.colorMask(Ce,Ce,Ce,Ce),ue=Ce)},setLocked:function(Ce){$=Ce},setClear:function(Ce,ot,pt,Tt,In){In===!0&&(Ce*=Tt,ot*=Tt,pt*=Tt),Pe.set(Ce,ot,pt,Tt),Ee.equals(Pe)===!1&&(i.clearColor(Ce,ot,pt,Tt),Ee.copy(Pe))},reset:function(){$=!1,ue=null,Ee.set(-1,0,0,0)}}}function s(){let $=!1,Pe=null,ue=null,Ee=null;return{setTest:function(Ce){Ce?oe(i.DEPTH_TEST):me(i.DEPTH_TEST)},setMask:function(Ce){Pe!==Ce&&!$&&(i.depthMask(Ce),Pe=Ce)},setFunc:function(Ce){if(ue!==Ce){switch(Ce){case KOe:i.depthFunc(i.NEVER);break;case ZOe:i.depthFunc(i.ALWAYS);break;case QOe:i.depthFunc(i.LESS);break;case TM:i.depthFunc(i.LEQUAL);break;case eNe:i.depthFunc(i.EQUAL);break;case tNe:i.depthFunc(i.GEQUAL);break;case nNe:i.depthFunc(i.GREATER);break;case rNe:i.depthFunc(i.NOTEQUAL);break;default:i.depthFunc(i.LEQUAL)}ue=Ce}},setLocked:function(Ce){$=Ce},setClear:function(Ce){Ee!==Ce&&(i.clearDepth(Ce),Ee=Ce)},reset:function(){$=!1,Pe=null,ue=null,Ee=null}}}function o(){let $=!1,Pe=null,ue=null,Ee=null,Ce=null,ot=null,pt=null,Tt=null,In=null;return{setTest:function(mt){$||(mt?oe(i.STENCIL_TEST):me(i.STENCIL_TEST))},setMask:function(mt){Pe!==mt&&!$&&(i.stencilMask(mt),Pe=mt)},setFunc:function(mt,Rn,Xt){(ue!==mt||Ee!==Rn||Ce!==Xt)&&(i.stencilFunc(mt,Rn,Xt),ue=mt,Ee=Rn,Ce=Xt)},setOp:function(mt,Rn,Xt){(ot!==mt||pt!==Rn||Tt!==Xt)&&(i.stencilOp(mt,Rn,Xt),ot=mt,pt=Rn,Tt=Xt)},setLocked:function(mt){$=mt},setClear:function(mt){In!==mt&&(i.clearStencil(mt),In=mt)},reset:function(){$=!1,Pe=null,ue=null,Ee=null,Ce=null,ot=null,pt=null,Tt=null,In=null}}}let a=new r,l=new s,c=new o,d=new WeakMap,u=new WeakMap,p={},v={},_=new WeakMap,b=[],y=null,g=!1,w=null,x=null,S=null,A=null,I=null,R=null,L=null,M=!1,k=null,F=null,Z=null,D=null,z=null,Y=i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS),le=!1,te=0,re=i.getParameter(i.VERSION);re.indexOf("WebGL")!==-1?(te=parseFloat(/^WebGL (\d)/.exec(re)[1]),le=te>=1):re.indexOf("OpenGL ES")!==-1&&(te=parseFloat(/^OpenGL ES (\d)/.exec(re)[1]),le=te>=2);let ae=null,j={},U=i.getParameter(i.SCISSOR_BOX),V=i.getParameter(i.VIEWPORT),J=new kr().fromArray(U),ee=new kr().fromArray(V);function Q($,Pe,ue,Ee){let Ce=new Uint8Array(4),ot=i.createTexture();i.bindTexture($,ot),i.texParameteri($,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri($,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let pt=0;pt<ue;pt++)n&&($===i.TEXTURE_3D||$===i.TEXTURE_2D_ARRAY)?i.texImage3D(Pe,0,i.RGBA,1,1,Ee,0,i.RGBA,i.UNSIGNED_BYTE,Ce):i.texImage2D(Pe+pt,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,Ce);return ot}let se={};se[i.TEXTURE_2D]=Q(i.TEXTURE_2D,i.TEXTURE_2D,1),se[i.TEXTURE_CUBE_MAP]=Q(i.TEXTURE_CUBE_MAP,i.TEXTURE_CUBE_MAP_POSITIVE_X,6),n&&(se[i.TEXTURE_2D_ARRAY]=Q(i.TEXTURE_2D_ARRAY,i.TEXTURE_2D_ARRAY,1,1),se[i.TEXTURE_3D]=Q(i.TEXTURE_3D,i.TEXTURE_3D,1,1)),a.setClear(0,0,0,1),l.setClear(1),c.setClear(0),oe(i.DEPTH_TEST),l.setFunc(TM),we(!1),$e(jhe),oe(i.CULL_FACE),ve(w0);function oe($){p[$]!==!0&&(i.enable($),p[$]=!0)}function me($){p[$]!==!1&&(i.disable($),p[$]=!1)}function _e($,Pe){return v[$]!==Pe?(i.bindFramebuffer($,Pe),v[$]=Pe,n&&($===i.DRAW_FRAMEBUFFER&&(v[i.FRAMEBUFFER]=Pe),$===i.FRAMEBUFFER&&(v[i.DRAW_FRAMEBUFFER]=Pe)),!0):!1}function xe($,Pe){let ue=b,Ee=!1;if($)if(ue=_.get(Pe),ue===void 0&&(ue=[],_.set(Pe,ue)),$.isWebGLMultipleRenderTargets){let Ce=$.texture;if(ue.length!==Ce.length||ue[0]!==i.COLOR_ATTACHMENT0){for(let ot=0,pt=Ce.length;ot<pt;ot++)ue[ot]=i.COLOR_ATTACHMENT0+ot;ue.length=Ce.length,Ee=!0}}else ue[0]!==i.COLOR_ATTACHMENT0&&(ue[0]=i.COLOR_ATTACHMENT0,Ee=!0);else ue[0]!==i.BACK&&(ue[0]=i.BACK,Ee=!0);Ee&&(t.isWebGL2?i.drawBuffers(ue):e.get("WEBGL_draw_buffers").drawBuffersWEBGL(ue))}function ye($){return y!==$?(i.useProgram($),y=$,!0):!1}let W={[O1]:i.FUNC_ADD,[FOe]:i.FUNC_SUBTRACT,[zOe]:i.FUNC_REVERSE_SUBTRACT};if(n)W[Jhe]=i.MIN,W[Khe]=i.MAX;else{let $=e.get("EXT_blend_minmax");$!==null&&(W[Jhe]=$.MIN_EXT,W[Khe]=$.MAX_EXT)}let ke={[HOe]:i.ZERO,[qOe]:i.ONE,[GOe]:i.SRC_COLOR,[fme]:i.SRC_ALPHA,[JOe]:i.SRC_ALPHA_SATURATE,[XOe]:i.DST_COLOR,[jOe]:i.DST_ALPHA,[WOe]:i.ONE_MINUS_SRC_COLOR,[hme]:i.ONE_MINUS_SRC_ALPHA,[YOe]:i.ONE_MINUS_DST_COLOR,[$Oe]:i.ONE_MINUS_DST_ALPHA};function ve($,Pe,ue,Ee,Ce,ot,pt,Tt){if($===w0){g===!0&&(me(i.BLEND),g=!1);return}if(g===!1&&(oe(i.BLEND),g=!0),$!==VOe){if($!==w||Tt!==M){if((x!==O1||I!==O1)&&(i.blendEquation(i.FUNC_ADD),x=O1,I=O1),Tt)switch($){case U1:i.blendFuncSeparate(i.ONE,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case $he:i.blendFunc(i.ONE,i.ONE);break;case Xhe:i.blendFuncSeparate(i.ZERO,i.ONE_MINUS_SRC_COLOR,i.ZERO,i.ONE);break;case Yhe:i.blendFuncSeparate(i.ZERO,i.SRC_COLOR,i.ZERO,i.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",$);break}else switch($){case U1:i.blendFuncSeparate(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case $he:i.blendFunc(i.SRC_ALPHA,i.ONE);break;case Xhe:i.blendFuncSeparate(i.ZERO,i.ONE_MINUS_SRC_COLOR,i.ZERO,i.ONE);break;case Yhe:i.blendFunc(i.ZERO,i.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",$);break}S=null,A=null,R=null,L=null,w=$,M=Tt}return}Ce=Ce||Pe,ot=ot||ue,pt=pt||Ee,(Pe!==x||Ce!==I)&&(i.blendEquationSeparate(W[Pe],W[Ce]),x=Pe,I=Ce),(ue!==S||Ee!==A||ot!==R||pt!==L)&&(i.blendFuncSeparate(ke[ue],ke[Ee],ke[ot],ke[pt]),S=ue,A=Ee,R=ot,L=pt),w=$,M=!1}function Ae($,Pe){$.side===Yi?me(i.CULL_FACE):oe(i.CULL_FACE);let ue=$.side===wi;Pe&&(ue=!ue),we(ue),$.blending===U1&&$.transparent===!1?ve(w0):ve($.blending,$.blendEquation,$.blendSrc,$.blendDst,$.blendEquationAlpha,$.blendSrcAlpha,$.blendDstAlpha,$.premultipliedAlpha),l.setFunc($.depthFunc),l.setTest($.depthTest),l.setMask($.depthWrite),a.setMask($.colorWrite);let Ee=$.stencilWrite;c.setTest(Ee),Ee&&(c.setMask($.stencilWriteMask),c.setFunc($.stencilFunc,$.stencilRef,$.stencilFuncMask),c.setOp($.stencilFail,$.stencilZFail,$.stencilZPass)),Oe($.polygonOffset,$.polygonOffsetFactor,$.polygonOffsetUnits),$.alphaToCoverage===!0?oe(i.SAMPLE_ALPHA_TO_COVERAGE):me(i.SAMPLE_ALPHA_TO_COVERAGE)}function we($){k!==$&&($?i.frontFace(i.CW):i.frontFace(i.CCW),k=$)}function $e($){$!==NOe?(oe(i.CULL_FACE),$!==F&&($===jhe?i.cullFace(i.BACK):$===DOe?i.cullFace(i.FRONT):i.cullFace(i.FRONT_AND_BACK))):me(i.CULL_FACE),F=$}function pe($){$!==Z&&(le&&i.lineWidth($),Z=$)}function Oe($,Pe,ue){$?(oe(i.POLYGON_OFFSET_FILL),(D!==Pe||z!==ue)&&(i.polygonOffset(Pe,ue),D=Pe,z=ue)):me(i.POLYGON_OFFSET_FILL)}function Ge($){$?oe(i.SCISSOR_TEST):me(i.SCISSOR_TEST)}function Xe($){$===void 0&&($=i.TEXTURE0+Y-1),ae!==$&&(i.activeTexture($),ae=$)}function tt($,Pe,ue){ue===void 0&&(ae===null?ue=i.TEXTURE0+Y-1:ue=ae);let Ee=j[ue];Ee===void 0&&(Ee={type:void 0,texture:void 0},j[ue]=Ee),(Ee.type!==$||Ee.texture!==Pe)&&(ae!==ue&&(i.activeTexture(ue),ae=ue),i.bindTexture($,Pe||se[$]),Ee.type=$,Ee.texture=Pe)}function N(){let $=j[ae];$!==void 0&&$.type!==void 0&&(i.bindTexture($.type,null),$.type=void 0,$.texture=void 0)}function C(){try{i.compressedTexImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function q(){try{i.compressedTexImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function B(){try{i.texSubImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function T(){try{i.texSubImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function P(){try{i.compressedTexSubImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function G(){try{i.compressedTexSubImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function X(){try{i.texStorage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function H(){try{i.texStorage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function he(){try{i.texImage2D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function Me(){try{i.texImage3D.apply(i,arguments)}catch($){console.error("THREE.WebGLState:",$)}}function Le($){J.equals($)===!1&&(i.scissor($.x,$.y,$.z,$.w),J.copy($))}function Te($){ee.equals($)===!1&&(i.viewport($.x,$.y,$.z,$.w),ee.copy($))}function Se($,Pe){let ue=u.get(Pe);ue===void 0&&(ue=new WeakMap,u.set(Pe,ue));let Ee=ue.get($);Ee===void 0&&(Ee=i.getUniformBlockIndex(Pe,$.name),ue.set($,Ee))}function He($,Pe){let Ee=u.get(Pe).get($);d.get(Pe)!==Ee&&(i.uniformBlockBinding(Pe,Ee,$.__bindingPointIndex),d.set(Pe,Ee))}function lt(){i.disable(i.BLEND),i.disable(i.CULL_FACE),i.disable(i.DEPTH_TEST),i.disable(i.POLYGON_OFFSET_FILL),i.disable(i.SCISSOR_TEST),i.disable(i.STENCIL_TEST),i.disable(i.SAMPLE_ALPHA_TO_COVERAGE),i.blendEquation(i.FUNC_ADD),i.blendFunc(i.ONE,i.ZERO),i.blendFuncSeparate(i.ONE,i.ZERO,i.ONE,i.ZERO),i.colorMask(!0,!0,!0,!0),i.clearColor(0,0,0,0),i.depthMask(!0),i.depthFunc(i.LESS),i.clearDepth(1),i.stencilMask(4294967295),i.stencilFunc(i.ALWAYS,0,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.KEEP),i.clearStencil(0),i.cullFace(i.BACK),i.frontFace(i.CCW),i.polygonOffset(0,0),i.activeTexture(i.TEXTURE0),i.bindFramebuffer(i.FRAMEBUFFER,null),n===!0&&(i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,null)),i.useProgram(null),i.lineWidth(1),i.scissor(0,0,i.canvas.width,i.canvas.height),i.viewport(0,0,i.canvas.width,i.canvas.height),p={},ae=null,j={},v={},_=new WeakMap,b=[],y=null,g=!1,w=null,x=null,S=null,A=null,I=null,R=null,L=null,M=!1,k=null,F=null,Z=null,D=null,z=null,J.set(0,0,i.canvas.width,i.canvas.height),ee.set(0,0,i.canvas.width,i.canvas.height),a.reset(),l.reset(),c.reset()}return{buffers:{color:a,depth:l,stencil:c},enable:oe,disable:me,bindFramebuffer:_e,drawBuffers:xe,useProgram:ye,setBlending:ve,setMaterial:Ae,setFlipSided:we,setCullFace:$e,setLineWidth:pe,setPolygonOffset:Oe,setScissorTest:Ge,activeTexture:Xe,bindTexture:tt,unbindTexture:N,compressedTexImage2D:C,compressedTexImage3D:q,texImage2D:he,texImage3D:Me,updateUBOMapping:Se,uniformBlockBinding:He,texStorage2D:X,texStorage3D:H,texSubImage2D:B,texSubImage3D:T,compressedTexSubImage2D:P,compressedTexSubImage3D:G,scissor:Le,viewport:Te,reset:lt}}function wze(i,e,t,n,r,s,o){let a=r.isWebGL2,l=r.maxTextures,c=r.maxCubemapSize,d=r.maxTextureSize,u=r.maxSamples,p=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,v=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),_=new WeakMap,b,y=new WeakMap,g=!1;try{g=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function w(N,C){return g?new OffscreenCanvas(N,C):h_("canvas")}function x(N,C,q,B){let T=1;if((N.width>B||N.height>B)&&(T=B/Math.max(N.width,N.height)),T<1||C===!0)if(typeof HTMLImageElement<"u"&&N instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&N instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&N instanceof ImageBitmap){let P=C?OM:Math.floor,G=P(T*N.width),X=P(T*N.height);b===void 0&&(b=w(G,X));let H=q?w(G,X):b;return H.width=G,H.height=X,H.getContext("2d").drawImage(N,0,0,G,X),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+N.width+"x"+N.height+") to ("+G+"x"+X+")."),H}else return"data"in N&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+N.width+"x"+N.height+")."),N;return N}function S(N){return I5e(N.width)&&I5e(N.height)}function A(N){return a?!1:N.wrapS!==js||N.wrapT!==js||N.minFilter!==ai&&N.minFilter!==ms}function I(N,C){return N.generateMipmaps&&C&&N.minFilter!==ai&&N.minFilter!==ms}function R(N){i.generateMipmap(N)}function L(N,C,q,B,T=!1){if(a===!1)return C;if(N!==null){if(i[N]!==void 0)return i[N];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+N+"'")}let P=C;return C===i.RED&&(q===i.FLOAT&&(P=i.R32F),q===i.HALF_FLOAT&&(P=i.R16F),q===i.UNSIGNED_BYTE&&(P=i.R8)),C===i.RED_INTEGER&&(q===i.UNSIGNED_BYTE&&(P=i.R8UI),q===i.UNSIGNED_SHORT&&(P=i.R16UI),q===i.UNSIGNED_INT&&(P=i.R32UI),q===i.BYTE&&(P=i.R8I),q===i.SHORT&&(P=i.R16I),q===i.INT&&(P=i.R32I)),C===i.RG&&(q===i.FLOAT&&(P=i.RG32F),q===i.HALF_FLOAT&&(P=i.RG16F),q===i.UNSIGNED_BYTE&&(P=i.RG8)),C===i.RGBA&&(q===i.FLOAT&&(P=i.RGBA32F),q===i.HALF_FLOAT&&(P=i.RGBA16F),q===i.UNSIGNED_BYTE&&(P=B===Mn&&T===!1?i.SRGB8_ALPHA8:i.RGBA8),q===i.UNSIGNED_SHORT_4_4_4_4&&(P=i.RGBA4),q===i.UNSIGNED_SHORT_5_5_5_1&&(P=i.RGB5_A1)),(P===i.R16F||P===i.R32F||P===i.RG16F||P===i.RG32F||P===i.RGBA16F||P===i.RGBA32F)&&e.get("EXT_color_buffer_float"),P}function M(N,C,q){return I(N,q)===!0||N.isFramebufferTexture&&N.minFilter!==ai&&N.minFilter!==ms?Math.log2(Math.max(C.width,C.height))+1:N.mipmaps!==void 0&&N.mipmaps.length>0?N.mipmaps.length:N.isCompressedTexture&&Array.isArray(N.image)?C.mipmaps.length:1}function k(N){return N===ai||N===Zhe||N===ZA?i.NEAREST:i.LINEAR}function F(N){let C=N.target;C.removeEventListener("dispose",F),D(C),C.isVideoTexture&&_.delete(C)}function Z(N){let C=N.target;C.removeEventListener("dispose",Z),Y(C)}function D(N){let C=n.get(N);if(C.__webglInit===void 0)return;let q=N.source,B=y.get(q);if(B){let T=B[C.__cacheKey];T.usedTimes--,T.usedTimes===0&&z(N),Object.keys(B).length===0&&y.delete(q)}n.remove(N)}function z(N){let C=n.get(N);i.deleteTexture(C.__webglTexture);let q=N.source,B=y.get(q);delete B[C.__cacheKey],o.memory.textures--}function Y(N){let C=N.texture,q=n.get(N),B=n.get(C);if(B.__webglTexture!==void 0&&(i.deleteTexture(B.__webglTexture),o.memory.textures--),N.depthTexture&&N.depthTexture.dispose(),N.isWebGLCubeRenderTarget)for(let T=0;T<6;T++){if(Array.isArray(q.__webglFramebuffer[T]))for(let P=0;P<q.__webglFramebuffer[T].length;P++)i.deleteFramebuffer(q.__webglFramebuffer[T][P]);else i.deleteFramebuffer(q.__webglFramebuffer[T]);q.__webglDepthbuffer&&i.deleteRenderbuffer(q.__webglDepthbuffer[T])}else{if(Array.isArray(q.__webglFramebuffer))for(let T=0;T<q.__webglFramebuffer.length;T++)i.deleteFramebuffer(q.__webglFramebuffer[T]);else i.deleteFramebuffer(q.__webglFramebuffer);if(q.__webglDepthbuffer&&i.deleteRenderbuffer(q.__webglDepthbuffer),q.__webglMultisampledFramebuffer&&i.deleteFramebuffer(q.__webglMultisampledFramebuffer),q.__webglColorRenderbuffer)for(let T=0;T<q.__webglColorRenderbuffer.length;T++)q.__webglColorRenderbuffer[T]&&i.deleteRenderbuffer(q.__webglColorRenderbuffer[T]);q.__webglDepthRenderbuffer&&i.deleteRenderbuffer(q.__webglDepthRenderbuffer)}if(N.isWebGLMultipleRenderTargets)for(let T=0,P=C.length;T<P;T++){let G=n.get(C[T]);G.__webglTexture&&(i.deleteTexture(G.__webglTexture),o.memory.textures--),n.remove(C[T])}n.remove(C),n.remove(N)}let le=0;function te(){le=0}function re(){let N=le;return N>=l&&console.warn("THREE.WebGLTextures: Trying to use "+N+" texture units while this GPU supports only "+l),le+=1,N}function ae(N){let C=[];return C.push(N.wrapS),C.push(N.wrapT),C.push(N.wrapR||0),C.push(N.magFilter),C.push(N.minFilter),C.push(N.anisotropy),C.push(N.internalFormat),C.push(N.format),C.push(N.type),C.push(N.generateMipmaps),C.push(N.premultiplyAlpha),C.push(N.flipY),C.push(N.unpackAlignment),C.push(N.colorSpace),C.join()}function j(N,C){let q=n.get(N);if(N.isVideoTexture&&Xe(N),N.isRenderTargetTexture===!1&&N.version>0&&q.__version!==N.version){let B=N.image;if(B===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(B.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{_e(q,N,C);return}}t.bindTexture(i.TEXTURE_2D,q.__webglTexture,i.TEXTURE0+C)}function U(N,C){let q=n.get(N);if(N.version>0&&q.__version!==N.version){_e(q,N,C);return}t.bindTexture(i.TEXTURE_2D_ARRAY,q.__webglTexture,i.TEXTURE0+C)}function V(N,C){let q=n.get(N);if(N.version>0&&q.__version!==N.version){_e(q,N,C);return}t.bindTexture(i.TEXTURE_3D,q.__webglTexture,i.TEXTURE0+C)}function J(N,C){let q=n.get(N);if(N.version>0&&q.__version!==N.version){xe(q,N,C);return}t.bindTexture(i.TEXTURE_CUBE_MAP,q.__webglTexture,i.TEXTURE0+C)}let ee={[CM]:i.REPEAT,[js]:i.CLAMP_TO_EDGE,[PM]:i.MIRRORED_REPEAT},Q={[ai]:i.NEAREST,[Zhe]:i.NEAREST_MIPMAP_NEAREST,[ZA]:i.NEAREST_MIPMAP_LINEAR,[ms]:i.LINEAR,[uNe]:i.LINEAR_MIPMAP_NEAREST,[Up]:i.LINEAR_MIPMAP_LINEAR},se={[ANe]:i.NEVER,[PNe]:i.ALWAYS,[MNe]:i.LESS,[TNe]:i.LEQUAL,[kNe]:i.EQUAL,[CNe]:i.GEQUAL,[INe]:i.GREATER,[RNe]:i.NOTEQUAL};function oe(N,C,q){if(q?(i.texParameteri(N,i.TEXTURE_WRAP_S,ee[C.wrapS]),i.texParameteri(N,i.TEXTURE_WRAP_T,ee[C.wrapT]),(N===i.TEXTURE_3D||N===i.TEXTURE_2D_ARRAY)&&i.texParameteri(N,i.TEXTURE_WRAP_R,ee[C.wrapR]),i.texParameteri(N,i.TEXTURE_MAG_FILTER,Q[C.magFilter]),i.texParameteri(N,i.TEXTURE_MIN_FILTER,Q[C.minFilter])):(i.texParameteri(N,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(N,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),(N===i.TEXTURE_3D||N===i.TEXTURE_2D_ARRAY)&&i.texParameteri(N,i.TEXTURE_WRAP_R,i.CLAMP_TO_EDGE),(C.wrapS!==js||C.wrapT!==js)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),i.texParameteri(N,i.TEXTURE_MAG_FILTER,k(C.magFilter)),i.texParameteri(N,i.TEXTURE_MIN_FILTER,k(C.minFilter)),C.minFilter!==ai&&C.minFilter!==ms&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),C.compareFunction&&(i.texParameteri(N,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(N,i.TEXTURE_COMPARE_FUNC,se[C.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){let B=e.get("EXT_texture_filter_anisotropic");if(C.magFilter===ai||C.minFilter!==ZA&&C.minFilter!==Up||C.type===x0&&e.has("OES_texture_float_linear")===!1||a===!1&&C.type===Vp&&e.has("OES_texture_half_float_linear")===!1)return;(C.anisotropy>1||n.get(C).__currentAnisotropy)&&(i.texParameterf(N,B.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(C.anisotropy,r.getMaxAnisotropy())),n.get(C).__currentAnisotropy=C.anisotropy)}}function me(N,C){let q=!1;N.__webglInit===void 0&&(N.__webglInit=!0,C.addEventListener("dispose",F));let B=C.source,T=y.get(B);T===void 0&&(T={},y.set(B,T));let P=ae(C);if(P!==N.__cacheKey){T[P]===void 0&&(T[P]={texture:i.createTexture(),usedTimes:0},o.memory.textures++,q=!0),T[P].usedTimes++;let G=T[N.__cacheKey];G!==void 0&&(T[N.__cacheKey].usedTimes--,G.usedTimes===0&&z(C)),N.__cacheKey=P,N.__webglTexture=T[P].texture}return q}function _e(N,C,q){let B=i.TEXTURE_2D;(C.isDataArrayTexture||C.isCompressedArrayTexture)&&(B=i.TEXTURE_2D_ARRAY),C.isData3DTexture&&(B=i.TEXTURE_3D);let T=me(N,C),P=C.source;t.bindTexture(B,N.__webglTexture,i.TEXTURE0+q);let G=n.get(P);if(P.version!==G.__version||T===!0){t.activeTexture(i.TEXTURE0+q),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,C.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,C.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,C.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,i.NONE);let X=A(C)&&S(C.image)===!1,H=x(C.image,X,!1,d);H=tt(C,H);let he=S(H)||a,Me=s.convert(C.format,C.colorSpace),Le=s.convert(C.type),Te=L(C.internalFormat,Me,Le,C.colorSpace,C.isVideoTexture);oe(B,C,he);let Se,He=C.mipmaps,lt=a&&C.isVideoTexture!==!0,$=G.__version===void 0||T===!0,Pe=M(C,H,he);if(C.isDepthTexture)Te=i.DEPTH_COMPONENT,a?C.type===x0?Te=i.DEPTH_COMPONENT32F:C.type===b0?Te=i.DEPTH_COMPONENT24:C.type===td?Te=i.DEPTH24_STENCIL8:Te=i.DEPTH_COMPONENT16:C.type===x0&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),C.format===nd&&Te===i.DEPTH_COMPONENT&&C.type!==hk&&C.type!==b0&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),C.type=b0,Le=s.convert(C.type)),C.format===q1&&Te===i.DEPTH_COMPONENT&&(Te=i.DEPTH_STENCIL,C.type!==td&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),C.type=td,Le=s.convert(C.type))),$&&(lt?t.texStorage2D(i.TEXTURE_2D,1,Te,H.width,H.height):t.texImage2D(i.TEXTURE_2D,0,Te,H.width,H.height,0,Me,Le,null));else if(C.isDataTexture)if(He.length>0&&he){lt&&$&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,He[0].width,He[0].height);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],lt?t.texSubImage2D(i.TEXTURE_2D,ue,0,0,Se.width,Se.height,Me,Le,Se.data):t.texImage2D(i.TEXTURE_2D,ue,Te,Se.width,Se.height,0,Me,Le,Se.data);C.generateMipmaps=!1}else lt?($&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,H.width,H.height),t.texSubImage2D(i.TEXTURE_2D,0,0,0,H.width,H.height,Me,Le,H.data)):t.texImage2D(i.TEXTURE_2D,0,Te,H.width,H.height,0,Me,Le,H.data);else if(C.isCompressedTexture)if(C.isCompressedArrayTexture){lt&&$&&t.texStorage3D(i.TEXTURE_2D_ARRAY,Pe,Te,He[0].width,He[0].height,H.depth);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],C.format!==$s?Me!==null?lt?t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,ue,0,0,0,Se.width,Se.height,H.depth,Me,Se.data,0,0):t.compressedTexImage3D(i.TEXTURE_2D_ARRAY,ue,Te,Se.width,Se.height,H.depth,0,Se.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):lt?t.texSubImage3D(i.TEXTURE_2D_ARRAY,ue,0,0,0,Se.width,Se.height,H.depth,Me,Le,Se.data):t.texImage3D(i.TEXTURE_2D_ARRAY,ue,Te,Se.width,Se.height,H.depth,0,Me,Le,Se.data)}else{lt&&$&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,He[0].width,He[0].height);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],C.format!==$s?Me!==null?lt?t.compressedTexSubImage2D(i.TEXTURE_2D,ue,0,0,Se.width,Se.height,Me,Se.data):t.compressedTexImage2D(i.TEXTURE_2D,ue,Te,Se.width,Se.height,0,Se.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):lt?t.texSubImage2D(i.TEXTURE_2D,ue,0,0,Se.width,Se.height,Me,Le,Se.data):t.texImage2D(i.TEXTURE_2D,ue,Te,Se.width,Se.height,0,Me,Le,Se.data)}else if(C.isDataArrayTexture)lt?($&&t.texStorage3D(i.TEXTURE_2D_ARRAY,Pe,Te,H.width,H.height,H.depth),t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,H.width,H.height,H.depth,Me,Le,H.data)):t.texImage3D(i.TEXTURE_2D_ARRAY,0,Te,H.width,H.height,H.depth,0,Me,Le,H.data);else if(C.isData3DTexture)lt?($&&t.texStorage3D(i.TEXTURE_3D,Pe,Te,H.width,H.height,H.depth),t.texSubImage3D(i.TEXTURE_3D,0,0,0,0,H.width,H.height,H.depth,Me,Le,H.data)):t.texImage3D(i.TEXTURE_3D,0,Te,H.width,H.height,H.depth,0,Me,Le,H.data);else if(C.isFramebufferTexture){if($)if(lt)t.texStorage2D(i.TEXTURE_2D,Pe,Te,H.width,H.height);else{let ue=H.width,Ee=H.height;for(let Ce=0;Ce<Pe;Ce++)t.texImage2D(i.TEXTURE_2D,Ce,Te,ue,Ee,0,Me,Le,null),ue>>=1,Ee>>=1}}else if(He.length>0&&he){lt&&$&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,He[0].width,He[0].height);for(let ue=0,Ee=He.length;ue<Ee;ue++)Se=He[ue],lt?t.texSubImage2D(i.TEXTURE_2D,ue,0,0,Me,Le,Se):t.texImage2D(i.TEXTURE_2D,ue,Te,Me,Le,Se);C.generateMipmaps=!1}else lt?($&&t.texStorage2D(i.TEXTURE_2D,Pe,Te,H.width,H.height),t.texSubImage2D(i.TEXTURE_2D,0,0,0,Me,Le,H)):t.texImage2D(i.TEXTURE_2D,0,Te,Me,Le,H);I(C,he)&&R(B),G.__version=P.version,C.onUpdate&&C.onUpdate(C)}N.__version=C.version}function xe(N,C,q){if(C.image.length!==6)return;let B=me(N,C),T=C.source;t.bindTexture(i.TEXTURE_CUBE_MAP,N.__webglTexture,i.TEXTURE0+q);let P=n.get(T);if(T.version!==P.__version||B===!0){t.activeTexture(i.TEXTURE0+q),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,C.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,C.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,C.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,i.NONE);let G=C.isCompressedTexture||C.image[0].isCompressedTexture,X=C.image[0]&&C.image[0].isDataTexture,H=[];for(let ue=0;ue<6;ue++)!G&&!X?H[ue]=x(C.image[ue],!1,!0,c):H[ue]=X?C.image[ue].image:C.image[ue],H[ue]=tt(C,H[ue]);let he=H[0],Me=S(he)||a,Le=s.convert(C.format,C.colorSpace),Te=s.convert(C.type),Se=L(C.internalFormat,Le,Te,C.colorSpace),He=a&&C.isVideoTexture!==!0,lt=P.__version===void 0||B===!0,$=M(C,he,Me);oe(i.TEXTURE_CUBE_MAP,C,Me);let Pe;if(G){He&&lt&&t.texStorage2D(i.TEXTURE_CUBE_MAP,$,Se,he.width,he.height);for(let ue=0;ue<6;ue++){Pe=H[ue].mipmaps;for(let Ee=0;Ee<Pe.length;Ee++){let Ce=Pe[Ee];C.format!==$s?Le!==null?He?t.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,0,0,Ce.width,Ce.height,Le,Ce.data):t.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,Se,Ce.width,Ce.height,0,Ce.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,0,0,Ce.width,Ce.height,Le,Te,Ce.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee,Se,Ce.width,Ce.height,0,Le,Te,Ce.data)}}}else{Pe=C.mipmaps,He&&lt&&(Pe.length>0&&$++,t.texStorage2D(i.TEXTURE_CUBE_MAP,$,Se,H[0].width,H[0].height));for(let ue=0;ue<6;ue++)if(X){He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,0,0,H[ue].width,H[ue].height,Le,Te,H[ue].data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,Se,H[ue].width,H[ue].height,0,Le,Te,H[ue].data);for(let Ee=0;Ee<Pe.length;Ee++){let ot=Pe[Ee].image[ue].image;He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,0,0,ot.width,ot.height,Le,Te,ot.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,Se,ot.width,ot.height,0,Le,Te,ot.data)}}else{He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,0,0,Le,Te,H[ue]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,Se,Le,Te,H[ue]);for(let Ee=0;Ee<Pe.length;Ee++){let Ce=Pe[Ee];He?t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,0,0,Le,Te,Ce.image[ue]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ue,Ee+1,Se,Le,Te,Ce.image[ue])}}}I(C,Me)&&R(i.TEXTURE_CUBE_MAP),P.__version=T.version,C.onUpdate&&C.onUpdate(C)}N.__version=C.version}function ye(N,C,q,B,T,P){let G=s.convert(q.format,q.colorSpace),X=s.convert(q.type),H=L(q.internalFormat,G,X,q.colorSpace);if(!n.get(C).__hasExternalTextures){let Me=Math.max(1,C.width>>P),Le=Math.max(1,C.height>>P);T===i.TEXTURE_3D||T===i.TEXTURE_2D_ARRAY?t.texImage3D(T,P,H,Me,Le,C.depth,0,G,X,null):t.texImage2D(T,P,H,Me,Le,0,G,X,null)}t.bindFramebuffer(i.FRAMEBUFFER,N),Ge(C)?p.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,B,T,n.get(q).__webglTexture,0,Oe(C)):(T===i.TEXTURE_2D||T>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&T<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,B,T,n.get(q).__webglTexture,P),t.bindFramebuffer(i.FRAMEBUFFER,null)}function W(N,C,q){if(i.bindRenderbuffer(i.RENDERBUFFER,N),C.depthBuffer&&!C.stencilBuffer){let B=i.DEPTH_COMPONENT16;if(q||Ge(C)){let T=C.depthTexture;T&&T.isDepthTexture&&(T.type===x0?B=i.DEPTH_COMPONENT32F:T.type===b0&&(B=i.DEPTH_COMPONENT24));let P=Oe(C);Ge(C)?p.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,P,B,C.width,C.height):i.renderbufferStorageMultisample(i.RENDERBUFFER,P,B,C.width,C.height)}else i.renderbufferStorage(i.RENDERBUFFER,B,C.width,C.height);i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.RENDERBUFFER,N)}else if(C.depthBuffer&&C.stencilBuffer){let B=Oe(C);q&&Ge(C)===!1?i.renderbufferStorageMultisample(i.RENDERBUFFER,B,i.DEPTH24_STENCIL8,C.width,C.height):Ge(C)?p.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,B,i.DEPTH24_STENCIL8,C.width,C.height):i.renderbufferStorage(i.RENDERBUFFER,i.DEPTH_STENCIL,C.width,C.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.RENDERBUFFER,N)}else{let B=C.isWebGLMultipleRenderTargets===!0?C.texture:[C.texture];for(let T=0;T<B.length;T++){let P=B[T],G=s.convert(P.format,P.colorSpace),X=s.convert(P.type),H=L(P.internalFormat,G,X,P.colorSpace),he=Oe(C);q&&Ge(C)===!1?i.renderbufferStorageMultisample(i.RENDERBUFFER,he,H,C.width,C.height):Ge(C)?p.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,he,H,C.width,C.height):i.renderbufferStorage(i.RENDERBUFFER,H,C.width,C.height)}}i.bindRenderbuffer(i.RENDERBUFFER,null)}function ke(N,C){if(C&&C.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(i.FRAMEBUFFER,N),!(C.depthTexture&&C.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(C.depthTexture).__webglTexture||C.depthTexture.image.width!==C.width||C.depthTexture.image.height!==C.height)&&(C.depthTexture.image.width=C.width,C.depthTexture.image.height=C.height,C.depthTexture.needsUpdate=!0),j(C.depthTexture,0);let B=n.get(C.depthTexture).__webglTexture,T=Oe(C);if(C.depthTexture.format===nd)Ge(C)?p.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,B,0,T):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,B,0);else if(C.depthTexture.format===q1)Ge(C)?p.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,B,0,T):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,B,0);else throw new Error("Unknown depthTexture format")}function ve(N){let C=n.get(N),q=N.isWebGLCubeRenderTarget===!0;if(N.depthTexture&&!C.__autoAllocateDepthBuffer){if(q)throw new Error("target.depthTexture not supported in Cube render targets");ke(C.__webglFramebuffer,N)}else if(q){C.__webglDepthbuffer=[];for(let B=0;B<6;B++)t.bindFramebuffer(i.FRAMEBUFFER,C.__webglFramebuffer[B]),C.__webglDepthbuffer[B]=i.createRenderbuffer(),W(C.__webglDepthbuffer[B],N,!1)}else t.bindFramebuffer(i.FRAMEBUFFER,C.__webglFramebuffer),C.__webglDepthbuffer=i.createRenderbuffer(),W(C.__webglDepthbuffer,N,!1);t.bindFramebuffer(i.FRAMEBUFFER,null)}function Ae(N,C,q){let B=n.get(N);C!==void 0&&ye(B.__webglFramebuffer,N,N.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),q!==void 0&&ve(N)}function we(N){let C=N.texture,q=n.get(N),B=n.get(C);N.addEventListener("dispose",Z),N.isWebGLMultipleRenderTargets!==!0&&(B.__webglTexture===void 0&&(B.__webglTexture=i.createTexture()),B.__version=C.version,o.memory.textures++);let T=N.isWebGLCubeRenderTarget===!0,P=N.isWebGLMultipleRenderTargets===!0,G=S(N)||a;if(T){q.__webglFramebuffer=[];for(let X=0;X<6;X++)if(a&&C.mipmaps&&C.mipmaps.length>0){q.__webglFramebuffer[X]=[];for(let H=0;H<C.mipmaps.length;H++)q.__webglFramebuffer[X][H]=i.createFramebuffer()}else q.__webglFramebuffer[X]=i.createFramebuffer()}else{if(a&&C.mipmaps&&C.mipmaps.length>0){q.__webglFramebuffer=[];for(let X=0;X<C.mipmaps.length;X++)q.__webglFramebuffer[X]=i.createFramebuffer()}else q.__webglFramebuffer=i.createFramebuffer();if(P)if(r.drawBuffers){let X=N.texture;for(let H=0,he=X.length;H<he;H++){let Me=n.get(X[H]);Me.__webglTexture===void 0&&(Me.__webglTexture=i.createTexture(),o.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(a&&N.samples>0&&Ge(N)===!1){let X=P?C:[C];q.__webglMultisampledFramebuffer=i.createFramebuffer(),q.__webglColorRenderbuffer=[],t.bindFramebuffer(i.FRAMEBUFFER,q.__webglMultisampledFramebuffer);for(let H=0;H<X.length;H++){let he=X[H];q.__webglColorRenderbuffer[H]=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,q.__webglColorRenderbuffer[H]);let Me=s.convert(he.format,he.colorSpace),Le=s.convert(he.type),Te=L(he.internalFormat,Me,Le,he.colorSpace,N.isXRRenderTarget===!0),Se=Oe(N);i.renderbufferStorageMultisample(i.RENDERBUFFER,Se,Te,N.width,N.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+H,i.RENDERBUFFER,q.__webglColorRenderbuffer[H])}i.bindRenderbuffer(i.RENDERBUFFER,null),N.depthBuffer&&(q.__webglDepthRenderbuffer=i.createRenderbuffer(),W(q.__webglDepthRenderbuffer,N,!0)),t.bindFramebuffer(i.FRAMEBUFFER,null)}}if(T){t.bindTexture(i.TEXTURE_CUBE_MAP,B.__webglTexture),oe(i.TEXTURE_CUBE_MAP,C,G);for(let X=0;X<6;X++)if(a&&C.mipmaps&&C.mipmaps.length>0)for(let H=0;H<C.mipmaps.length;H++)ye(q.__webglFramebuffer[X][H],N,C,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+X,H);else ye(q.__webglFramebuffer[X],N,C,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+X,0);I(C,G)&&R(i.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(P){let X=N.texture;for(let H=0,he=X.length;H<he;H++){let Me=X[H],Le=n.get(Me);t.bindTexture(i.TEXTURE_2D,Le.__webglTexture),oe(i.TEXTURE_2D,Me,G),ye(q.__webglFramebuffer,N,Me,i.COLOR_ATTACHMENT0+H,i.TEXTURE_2D,0),I(Me,G)&&R(i.TEXTURE_2D)}t.unbindTexture()}else{let X=i.TEXTURE_2D;if((N.isWebGL3DRenderTarget||N.isWebGLArrayRenderTarget)&&(a?X=N.isWebGL3DRenderTarget?i.TEXTURE_3D:i.TEXTURE_2D_ARRAY:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),t.bindTexture(X,B.__webglTexture),oe(X,C,G),a&&C.mipmaps&&C.mipmaps.length>0)for(let H=0;H<C.mipmaps.length;H++)ye(q.__webglFramebuffer[H],N,C,i.COLOR_ATTACHMENT0,X,H);else ye(q.__webglFramebuffer,N,C,i.COLOR_ATTACHMENT0,X,0);I(C,G)&&R(X),t.unbindTexture()}N.depthBuffer&&ve(N)}function $e(N){let C=S(N)||a,q=N.isWebGLMultipleRenderTargets===!0?N.texture:[N.texture];for(let B=0,T=q.length;B<T;B++){let P=q[B];if(I(P,C)){let G=N.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:i.TEXTURE_2D,X=n.get(P).__webglTexture;t.bindTexture(G,X),R(G),t.unbindTexture()}}}function pe(N){if(a&&N.samples>0&&Ge(N)===!1){let C=N.isWebGLMultipleRenderTargets?N.texture:[N.texture],q=N.width,B=N.height,T=i.COLOR_BUFFER_BIT,P=[],G=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,X=n.get(N),H=N.isWebGLMultipleRenderTargets===!0;if(H)for(let he=0;he<C.length;he++)t.bindFramebuffer(i.FRAMEBUFFER,X.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,null),t.bindFramebuffer(i.FRAMEBUFFER,X.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,null,0);t.bindFramebuffer(i.READ_FRAMEBUFFER,X.__webglMultisampledFramebuffer),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,X.__webglFramebuffer);for(let he=0;he<C.length;he++){P.push(i.COLOR_ATTACHMENT0+he),N.depthBuffer&&P.push(G);let Me=X.__ignoreDepthValues!==void 0?X.__ignoreDepthValues:!1;if(Me===!1&&(N.depthBuffer&&(T|=i.DEPTH_BUFFER_BIT),N.stencilBuffer&&(T|=i.STENCIL_BUFFER_BIT)),H&&i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,X.__webglColorRenderbuffer[he]),Me===!0&&(i.invalidateFramebuffer(i.READ_FRAMEBUFFER,[G]),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[G])),H){let Le=n.get(C[he]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Le,0)}i.blitFramebuffer(0,0,q,B,0,0,q,B,T,i.NEAREST),v&&i.invalidateFramebuffer(i.READ_FRAMEBUFFER,P)}if(t.bindFramebuffer(i.READ_FRAMEBUFFER,null),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),H)for(let he=0;he<C.length;he++){t.bindFramebuffer(i.FRAMEBUFFER,X.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,X.__webglColorRenderbuffer[he]);let Me=n.get(C[he]).__webglTexture;t.bindFramebuffer(i.FRAMEBUFFER,X.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,Me,0)}t.bindFramebuffer(i.DRAW_FRAMEBUFFER,X.__webglMultisampledFramebuffer)}}function Oe(N){return Math.min(u,N.samples)}function Ge(N){let C=n.get(N);return a&&N.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&C.__useRenderToTexture!==!1}function Xe(N){let C=o.render.frame;_.get(N)!==C&&(_.set(N,C),N.update())}function tt(N,C){let q=N.colorSpace,B=N.format,T=N.type;return N.isCompressedTexture===!0||N.isVideoTexture===!0||N.format===LM||q!==No&&q!==id&&(q===Mn||q===k_?a===!1?e.has("EXT_sRGB")===!0&&B===$s?(N.format=LM,N.minFilter=ms,N.generateMipmaps=!1):C=m_.sRGBToLinear(C):(B!==$s||T!==E0)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",q)),C}this.allocateTextureUnit=re,this.resetTextureUnits=te,this.setTexture2D=j,this.setTexture2DArray=U,this.setTexture3D=V,this.setTextureCube=J,this.rebindTextures=Ae,this.setupRenderTarget=we,this.updateRenderTargetMipmap=$e,this.updateMultisampleRenderTarget=pe,this.setupDepthRenderbuffer=ve,this.setupFrameBufferTexture=ye,this.useMultisampledRTT=Ge}var Sze=0,dr=1;function Eze(i,e,t){let n=t.isWebGL2;function r(s,o=id){let a,l=o===Mn||o===k_?dr:Sze;if(s===E0)return i.UNSIGNED_BYTE;if(s===gme)return i.UNSIGNED_SHORT_4_4_4_4;if(s===_me)return i.UNSIGNED_SHORT_5_5_5_1;if(s===fNe)return i.BYTE;if(s===hNe)return i.SHORT;if(s===hk)return i.UNSIGNED_SHORT;if(s===vme)return i.INT;if(s===b0)return i.UNSIGNED_INT;if(s===x0)return i.FLOAT;if(s===Vp)return n?i.HALF_FLOAT:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===mNe)return i.ALPHA;if(s===$s)return i.RGBA;if(s===pNe)return i.LUMINANCE;if(s===vNe)return i.LUMINANCE_ALPHA;if(s===nd)return i.DEPTH_COMPONENT;if(s===q1)return i.DEPTH_STENCIL;if(s===LM)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===gNe)return i.RED;if(s===yme)return i.RED_INTEGER;if(s===_Ne)return i.RG;if(s===bme)return i.RG_INTEGER;if(s===xme)return i.RGBA_INTEGER;if(s===QA||s===eM||s===tM||s===nM)if(l===dr)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===QA)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===eM)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===tM)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===nM)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===QA)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===eM)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===tM)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===nM)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===Qhe||s===e5e||s===t5e||s===n5e)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===Qhe)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===e5e)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===t5e)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===n5e)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===yNe)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===r5e||s===i5e)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(s===r5e)return l===dr?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===i5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===s5e||s===o5e||s===a5e||s===l5e||s===c5e||s===d5e||s===u5e||s===f5e||s===h5e||s===m5e||s===p5e||s===v5e||s===g5e||s===_5e)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(s===s5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===o5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===a5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===l5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===c5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===d5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===u5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===f5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===h5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===m5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===p5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===v5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===g5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===_5e)return l===dr?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===rM||s===y5e||s===b5e)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(s===rM)return l===dr?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(s===y5e)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(s===b5e)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(s===bNe||s===x5e||s===w5e||s===S5e)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(s===rM)return a.COMPRESSED_RED_RGTC1_EXT;if(s===x5e)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===w5e)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===S5e)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===td?n?i.UNSIGNED_INT_24_8:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):i[s]!==void 0?i[s]:null}return{convert:r}}var KM=class extends Xi{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},ur=class extends Do{constructor(){super(),this.isGroup=!0,this.type="Group"}},Aze={type:"move"},Dp=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new ur,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new ur,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Ne,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Ne),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new ur,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Ne,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Ne),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){let t=this._hand;if(t)for(let n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,s=null,o=null,a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(let b of e.hand.values()){let y=t.getJointPose(b,n),g=this._getHandJoint(c,b);y!==null&&(g.matrix.fromArray(y.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.matrixWorldNeedsUpdate=!0,g.jointRadius=y.radius),g.visible=y!==null}let d=c.joints["index-finger-tip"],u=c.joints["thumb-tip"],p=d.position.distanceTo(u.position),v=.02,_=.005;c.inputState.pinching&&p>v+_?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&p<=v-_&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Aze)))}return a!==null&&(a.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let n=new ur;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}},ZM=class extends Ys{constructor(e,t,n,r,s,o,a,l,c,d){if(d=d!==void 0?d:nd,d!==nd&&d!==q1)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&d===nd&&(n=b0),n===void 0&&d===q1&&(n=td),super(null,r,s,o,a,l,d,n,c),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:ai,this.minFilter=l!==void 0?l:ai,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},QM=class extends A0{constructor(e,t){super();let n=this,r=null,s=1,o=null,a="local-floor",l=1,c=null,d=null,u=null,p=null,v=null,_=null,b=t.getContextAttributes(),y=null,g=null,w=[],x=[],S=new Xi;S.layers.enable(1),S.viewport=new kr;let A=new Xi;A.layers.enable(2),A.viewport=new kr;let I=[S,A],R=new KM;R.layers.enable(1),R.layers.enable(2);let L=null,M=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(U){let V=w[U];return V===void 0&&(V=new Dp,w[U]=V),V.getTargetRaySpace()},this.getControllerGrip=function(U){let V=w[U];return V===void 0&&(V=new Dp,w[U]=V),V.getGripSpace()},this.getHand=function(U){let V=w[U];return V===void 0&&(V=new Dp,w[U]=V),V.getHandSpace()};function k(U){let V=x.indexOf(U.inputSource);if(V===-1)return;let J=w[V];J!==void 0&&(J.update(U.inputSource,U.frame,c||o),J.dispatchEvent({type:U.type,data:U.inputSource}))}function F(){r.removeEventListener("select",k),r.removeEventListener("selectstart",k),r.removeEventListener("selectend",k),r.removeEventListener("squeeze",k),r.removeEventListener("squeezestart",k),r.removeEventListener("squeezeend",k),r.removeEventListener("end",F),r.removeEventListener("inputsourceschange",Z);for(let U=0;U<w.length;U++){let V=x[U];V!==null&&(x[U]=null,w[U].disconnect(V))}L=null,M=null,e.setRenderTarget(y),v=null,p=null,u=null,r=null,g=null,j.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(U){s=U,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(U){a=U,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return c||o},this.setReferenceSpace=function(U){c=U},this.getBaseLayer=function(){return p!==null?p:v},this.getBinding=function(){return u},this.getFrame=function(){return _},this.getSession=function(){return r},this.setSession=async function(U){if(r=U,r!==null){if(y=e.getRenderTarget(),r.addEventListener("select",k),r.addEventListener("selectstart",k),r.addEventListener("selectend",k),r.addEventListener("squeeze",k),r.addEventListener("squeezestart",k),r.addEventListener("squeezeend",k),r.addEventListener("end",F),r.addEventListener("inputsourceschange",Z),b.xrCompatible!==!0&&await t.makeXRCompatible(),r.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let V={antialias:r.renderState.layers===void 0?b.antialias:!0,alpha:!0,depth:b.depth,stencil:b.stencil,framebufferScaleFactor:s};v=new XRWebGLLayer(r,t,V),r.updateRenderState({baseLayer:v}),g=new Za(v.framebufferWidth,v.framebufferHeight,{format:$s,type:E0,colorSpace:e.outputColorSpace,stencilBuffer:b.stencil})}else{let V=null,J=null,ee=null;b.depth&&(ee=b.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,V=b.stencil?q1:nd,J=b.stencil?td:b0);let Q={colorFormat:t.RGBA8,depthFormat:ee,scaleFactor:s};u=new XRWebGLBinding(r,t),p=u.createProjectionLayer(Q),r.updateRenderState({layers:[p]}),g=new Za(p.textureWidth,p.textureHeight,{format:$s,type:E0,depthTexture:new ZM(p.textureWidth,p.textureHeight,J,void 0,void 0,void 0,void 0,void 0,void 0,V),stencilBuffer:b.stencil,colorSpace:e.outputColorSpace,samples:b.antialias?4:0});let se=e.properties.get(g);se.__ignoreDepthValues=p.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(l),c=null,o=await r.requestReferenceSpace(a),j.setContext(r),j.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(r!==null)return r.environmentBlendMode};function Z(U){for(let V=0;V<U.removed.length;V++){let J=U.removed[V],ee=x.indexOf(J);ee>=0&&(x[ee]=null,w[ee].disconnect(J))}for(let V=0;V<U.added.length;V++){let J=U.added[V],ee=x.indexOf(J);if(ee===-1){for(let se=0;se<w.length;se++)if(se>=x.length){x.push(J),ee=se;break}else if(x[se]===null){x[se]=J,ee=se;break}if(ee===-1)break}let Q=w[ee];Q&&Q.connect(J)}}let D=new Ne,z=new Ne;function Y(U,V,J){D.setFromMatrixPosition(V.matrixWorld),z.setFromMatrixPosition(J.matrixWorld);let ee=D.distanceTo(z),Q=V.projectionMatrix.elements,se=J.projectionMatrix.elements,oe=Q[14]/(Q[10]-1),me=Q[14]/(Q[10]+1),_e=(Q[9]+1)/Q[5],xe=(Q[9]-1)/Q[5],ye=(Q[8]-1)/Q[0],W=(se[8]+1)/se[0],ke=oe*ye,ve=oe*W,Ae=ee/(-ye+W),we=Ae*-ye;V.matrixWorld.decompose(U.position,U.quaternion,U.scale),U.translateX(we),U.translateZ(Ae),U.matrixWorld.compose(U.position,U.quaternion,U.scale),U.matrixWorldInverse.copy(U.matrixWorld).invert();let $e=oe+Ae,pe=me+Ae,Oe=ke-we,Ge=ve+(ee-we),Xe=_e*me/pe*$e,tt=xe*me/pe*$e;U.projectionMatrix.makePerspective(Oe,Ge,Xe,tt,$e,pe),U.projectionMatrixInverse.copy(U.projectionMatrix).invert()}function le(U,V){V===null?U.matrixWorld.copy(U.matrix):U.matrixWorld.multiplyMatrices(V.matrixWorld,U.matrix),U.matrixWorldInverse.copy(U.matrixWorld).invert()}this.updateCamera=function(U){if(r===null)return;R.near=A.near=S.near=U.near,R.far=A.far=S.far=U.far,(L!==R.near||M!==R.far)&&(r.updateRenderState({depthNear:R.near,depthFar:R.far}),L=R.near,M=R.far);let V=U.parent,J=R.cameras;le(R,V);for(let ee=0;ee<J.length;ee++)le(J[ee],V);J.length===2?Y(R,S,A):R.projectionMatrix.copy(S.projectionMatrix),te(U,R,V)};function te(U,V,J){J===null?U.matrix.copy(V.matrixWorld):(U.matrix.copy(J.matrixWorld),U.matrix.invert(),U.matrix.multiply(V.matrixWorld)),U.matrix.decompose(U.position,U.quaternion,U.scale),U.updateMatrixWorld(!0),U.projectionMatrix.copy(V.projectionMatrix),U.projectionMatrixInverse.copy(V.projectionMatrixInverse),U.isPerspectiveCamera&&(U.fov=BM*2*Math.atan(1/U.projectionMatrix.elements[5]),U.zoom=1)}this.getCamera=function(){return R},this.getFoveation=function(){if(!(p===null&&v===null))return l},this.setFoveation=function(U){l=U,p!==null&&(p.fixedFoveation=U),v!==null&&v.fixedFoveation!==void 0&&(v.fixedFoveation=U)};let re=null;function ae(U,V){if(d=V.getViewerPose(c||o),_=V,d!==null){let J=d.views;v!==null&&(e.setRenderTargetFramebuffer(g,v.framebuffer),e.setRenderTarget(g));let ee=!1;J.length!==R.cameras.length&&(R.cameras.length=0,ee=!0);for(let Q=0;Q<J.length;Q++){let se=J[Q],oe=null;if(v!==null)oe=v.getViewport(se);else{let _e=u.getViewSubImage(p,se);oe=_e.viewport,Q===0&&(e.setRenderTargetTextures(g,_e.colorTexture,p.ignoreDepthValues?void 0:_e.depthStencilTexture),e.setRenderTarget(g))}let me=I[Q];me===void 0&&(me=new Xi,me.layers.enable(Q),me.viewport=new kr,I[Q]=me),me.matrix.fromArray(se.transform.matrix),me.matrix.decompose(me.position,me.quaternion,me.scale),me.projectionMatrix.fromArray(se.projectionMatrix),me.projectionMatrixInverse.copy(me.projectionMatrix).invert(),me.viewport.set(oe.x,oe.y,oe.width,oe.height),Q===0&&(R.matrix.copy(me.matrix),R.matrix.decompose(R.position,R.quaternion,R.scale)),ee===!0&&R.cameras.push(me)}}for(let J=0;J<w.length;J++){let ee=x[J],Q=w[J];ee!==null&&Q!==void 0&&Q.update(ee,V,c||o)}re&&re(U,V),V.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:V}),_=null}let j=new kme;j.setAnimationLoop(ae),this.setAnimationLoop=function(U){re=U},this.dispose=function(){}}};function Mze(i,e){function t(y,g){y.matrixAutoUpdate===!0&&y.updateMatrix(),g.value.copy(y.matrix)}function n(y,g){g.color.getRGB(y.fogColor.value,Mme(i)),g.isFog?(y.fogNear.value=g.near,y.fogFar.value=g.far):g.isFogExp2&&(y.fogDensity.value=g.density)}function r(y,g,w,x,S){g.isMeshBasicMaterial||g.isMeshLambertMaterial?s(y,g):g.isMeshToonMaterial?(s(y,g),u(y,g)):g.isMeshPhongMaterial?(s(y,g),d(y,g)):g.isMeshStandardMaterial?(s(y,g),p(y,g),g.isMeshPhysicalMaterial&&v(y,g,S)):g.isMeshMatcapMaterial?(s(y,g),_(y,g)):g.isMeshDepthMaterial?s(y,g):g.isMeshDistanceMaterial?(s(y,g),b(y,g)):g.isMeshNormalMaterial?s(y,g):g.isLineBasicMaterial?(o(y,g),g.isLineDashedMaterial&&a(y,g)):g.isPointsMaterial?l(y,g,w,x):g.isSpriteMaterial?c(y,g):g.isShadowMaterial?(y.color.value.copy(g.color),y.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function s(y,g){y.opacity.value=g.opacity,g.color&&y.diffuse.value.copy(g.color),g.emissive&&y.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(y.map.value=g.map,t(g.map,y.mapTransform)),g.alphaMap&&(y.alphaMap.value=g.alphaMap,t(g.alphaMap,y.alphaMapTransform)),g.bumpMap&&(y.bumpMap.value=g.bumpMap,t(g.bumpMap,y.bumpMapTransform),y.bumpScale.value=g.bumpScale,g.side===wi&&(y.bumpScale.value*=-1)),g.normalMap&&(y.normalMap.value=g.normalMap,t(g.normalMap,y.normalMapTransform),y.normalScale.value.copy(g.normalScale),g.side===wi&&y.normalScale.value.negate()),g.displacementMap&&(y.displacementMap.value=g.displacementMap,t(g.displacementMap,y.displacementMapTransform),y.displacementScale.value=g.displacementScale,y.displacementBias.value=g.displacementBias),g.emissiveMap&&(y.emissiveMap.value=g.emissiveMap,t(g.emissiveMap,y.emissiveMapTransform)),g.specularMap&&(y.specularMap.value=g.specularMap,t(g.specularMap,y.specularMapTransform)),g.alphaTest>0&&(y.alphaTest.value=g.alphaTest);let w=e.get(g).envMap;if(w&&(y.envMap.value=w,y.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,y.reflectivity.value=g.reflectivity,y.ior.value=g.ior,y.refractionRatio.value=g.refractionRatio),g.lightMap){y.lightMap.value=g.lightMap;let x=i._useLegacyLights===!0?Math.PI:1;y.lightMapIntensity.value=g.lightMapIntensity*x,t(g.lightMap,y.lightMapTransform)}g.aoMap&&(y.aoMap.value=g.aoMap,y.aoMapIntensity.value=g.aoMapIntensity,t(g.aoMap,y.aoMapTransform))}function o(y,g){y.diffuse.value.copy(g.color),y.opacity.value=g.opacity,g.map&&(y.map.value=g.map,t(g.map,y.mapTransform))}function a(y,g){y.dashSize.value=g.dashSize,y.totalSize.value=g.dashSize+g.gapSize,y.scale.value=g.scale}function l(y,g,w,x){y.diffuse.value.copy(g.color),y.opacity.value=g.opacity,y.size.value=g.size*w,y.scale.value=x*.5,g.map&&(y.map.value=g.map,t(g.map,y.uvTransform)),g.alphaMap&&(y.alphaMap.value=g.alphaMap,t(g.alphaMap,y.alphaMapTransform)),g.alphaTest>0&&(y.alphaTest.value=g.alphaTest)}function c(y,g){y.diffuse.value.copy(g.color),y.opacity.value=g.opacity,y.rotation.value=g.rotation,g.map&&(y.map.value=g.map,t(g.map,y.mapTransform)),g.alphaMap&&(y.alphaMap.value=g.alphaMap,t(g.alphaMap,y.alphaMapTransform)),g.alphaTest>0&&(y.alphaTest.value=g.alphaTest)}function d(y,g){y.specular.value.copy(g.specular),y.shininess.value=Math.max(g.shininess,1e-4)}function u(y,g){g.gradientMap&&(y.gradientMap.value=g.gradientMap)}function p(y,g){y.metalness.value=g.metalness,g.metalnessMap&&(y.metalnessMap.value=g.metalnessMap,t(g.metalnessMap,y.metalnessMapTransform)),y.roughness.value=g.roughness,g.roughnessMap&&(y.roughnessMap.value=g.roughnessMap,t(g.roughnessMap,y.roughnessMapTransform)),e.get(g).envMap&&(y.envMapIntensity.value=g.envMapIntensity)}function v(y,g,w){y.ior.value=g.ior,g.sheen>0&&(y.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),y.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(y.sheenColorMap.value=g.sheenColorMap,t(g.sheenColorMap,y.sheenColorMapTransform)),g.sheenRoughnessMap&&(y.sheenRoughnessMap.value=g.sheenRoughnessMap,t(g.sheenRoughnessMap,y.sheenRoughnessMapTransform))),g.clearcoat>0&&(y.clearcoat.value=g.clearcoat,y.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(y.clearcoatMap.value=g.clearcoatMap,t(g.clearcoatMap,y.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(y.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,t(g.clearcoatRoughnessMap,y.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(y.clearcoatNormalMap.value=g.clearcoatNormalMap,t(g.clearcoatNormalMap,y.clearcoatNormalMapTransform),y.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===wi&&y.clearcoatNormalScale.value.negate())),g.iridescence>0&&(y.iridescence.value=g.iridescence,y.iridescenceIOR.value=g.iridescenceIOR,y.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],y.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(y.iridescenceMap.value=g.iridescenceMap,t(g.iridescenceMap,y.iridescenceMapTransform)),g.iridescenceThicknessMap&&(y.iridescenceThicknessMap.value=g.iridescenceThicknessMap,t(g.iridescenceThicknessMap,y.iridescenceThicknessMapTransform))),g.transmission>0&&(y.transmission.value=g.transmission,y.transmissionSamplerMap.value=w.texture,y.transmissionSamplerSize.value.set(w.width,w.height),g.transmissionMap&&(y.transmissionMap.value=g.transmissionMap,t(g.transmissionMap,y.transmissionMapTransform)),y.thickness.value=g.thickness,g.thicknessMap&&(y.thicknessMap.value=g.thicknessMap,t(g.thicknessMap,y.thicknessMapTransform)),y.attenuationDistance.value=g.attenuationDistance,y.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(y.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(y.anisotropyMap.value=g.anisotropyMap,t(g.anisotropyMap,y.anisotropyMapTransform))),y.specularIntensity.value=g.specularIntensity,y.specularColor.value.copy(g.specularColor),g.specularColorMap&&(y.specularColorMap.value=g.specularColorMap,t(g.specularColorMap,y.specularColorMapTransform)),g.specularIntensityMap&&(y.specularIntensityMap.value=g.specularIntensityMap,t(g.specularIntensityMap,y.specularIntensityMapTransform))}function _(y,g){g.matcap&&(y.matcap.value=g.matcap)}function b(y,g){let w=e.get(g).light;y.referencePosition.value.setFromMatrixPosition(w.matrixWorld),y.nearDistance.value=w.shadow.camera.near,y.farDistance.value=w.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function kze(i,e,t,n){let r={},s={},o=[],a=t.isWebGL2?i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(w,x){let S=x.program;n.uniformBlockBinding(w,S)}function c(w,x){let S=r[w.id];S===void 0&&(_(w),S=d(w),r[w.id]=S,w.addEventListener("dispose",y));let A=x.program;n.updateUBOMapping(w,A);let I=e.render.frame;s[w.id]!==I&&(p(w),s[w.id]=I)}function d(w){let x=u();w.__bindingPointIndex=x;let S=i.createBuffer(),A=w.__size,I=w.usage;return i.bindBuffer(i.UNIFORM_BUFFER,S),i.bufferData(i.UNIFORM_BUFFER,A,I),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,x,S),S}function u(){for(let w=0;w<a;w++)if(o.indexOf(w)===-1)return o.push(w),w;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function p(w){let x=r[w.id],S=w.uniforms,A=w.__cache;i.bindBuffer(i.UNIFORM_BUFFER,x);for(let I=0,R=S.length;I<R;I++){let L=S[I];if(v(L,I,A)===!0){let M=L.__offset,k=Array.isArray(L.value)?L.value:[L.value],F=0;for(let Z=0;Z<k.length;Z++){let D=k[Z],z=b(D);typeof D=="number"?(L.__data[0]=D,i.bufferSubData(i.UNIFORM_BUFFER,M+F,L.__data)):D.isMatrix3?(L.__data[0]=D.elements[0],L.__data[1]=D.elements[1],L.__data[2]=D.elements[2],L.__data[3]=D.elements[0],L.__data[4]=D.elements[3],L.__data[5]=D.elements[4],L.__data[6]=D.elements[5],L.__data[7]=D.elements[0],L.__data[8]=D.elements[6],L.__data[9]=D.elements[7],L.__data[10]=D.elements[8],L.__data[11]=D.elements[0]):(D.toArray(L.__data,F),F+=z.storage/Float32Array.BYTES_PER_ELEMENT)}i.bufferSubData(i.UNIFORM_BUFFER,M,L.__data)}}i.bindBuffer(i.UNIFORM_BUFFER,null)}function v(w,x,S){let A=w.value;if(S[x]===void 0){if(typeof A=="number")S[x]=A;else{let I=Array.isArray(A)?A:[A],R=[];for(let L=0;L<I.length;L++)R.push(I[L].clone());S[x]=R}return!0}else if(typeof A=="number"){if(S[x]!==A)return S[x]=A,!0}else{let I=Array.isArray(S[x])?S[x]:[S[x]],R=Array.isArray(A)?A:[A];for(let L=0;L<I.length;L++){let M=I[L];if(M.equals(R[L])===!1)return M.copy(R[L]),!0}}return!1}function _(w){let x=w.uniforms,S=0,A=16,I=0;for(let R=0,L=x.length;R<L;R++){let M=x[R],k={boundary:0,storage:0},F=Array.isArray(M.value)?M.value:[M.value];for(let Z=0,D=F.length;Z<D;Z++){let z=F[Z],Y=b(z);k.boundary+=Y.boundary,k.storage+=Y.storage}if(M.__data=new Float32Array(k.storage/Float32Array.BYTES_PER_ELEMENT),M.__offset=S,R>0){I=S%A;let Z=A-I;I!==0&&Z-k.boundary<0&&(S+=A-I,M.__offset=S)}S+=k.storage}return I=S%A,I>0&&(S+=A-I),w.__size=S,w.__cache={},this}function b(w){let x={boundary:0,storage:0};return typeof w=="number"?(x.boundary=4,x.storage=4):w.isVector2?(x.boundary=8,x.storage=8):w.isVector3||w.isColor?(x.boundary=16,x.storage=12):w.isVector4?(x.boundary=16,x.storage=16):w.isMatrix3?(x.boundary=48,x.storage=48):w.isMatrix4?(x.boundary=64,x.storage=64):w.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",w),x}function y(w){let x=w.target;x.removeEventListener("dispose",y);let S=o.indexOf(x.__bindingPointIndex);o.splice(S,1),i.deleteBuffer(r[x.id]),delete r[x.id],delete s[x.id]}function g(){for(let w in r)i.deleteBuffer(r[w]);o=[],r={},s={}}return{bind:l,update:c,dispose:g}}var ek=class{constructor(e={}){let{canvas:t=BNe(),context:n=null,depth:r=!0,stencil:s=!0,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:u=!1}=e;this.isWebGLRenderer=!0;let p;n!==null?p=n.getContextAttributes().alpha:p=o;let v=new Uint32Array(4),_=new Int32Array(4),b=null,y=null,g=[],w=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputColorSpace=Mn,this._useLegacyLights=!1,this.toneMapping=S0,this.toneMappingExposure=1;let x=this,S=!1,A=0,I=0,R=null,L=-1,M=null,k=new kr,F=new kr,Z=null,D=new un(0),z=0,Y=t.width,le=t.height,te=1,re=null,ae=null,j=new kr(0,0,Y,le),U=new kr(0,0,Y,le),V=!1,J=new E_,ee=!1,Q=!1,se=null,oe=new Wr,me=new Qt,_e=new Ne,xe={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ye(){return R===null?te:1}let W=n;function ke(O,ie){for(let ce=0;ce<O.length;ce++){let ne=O[ce],fe=t.getContext(ne,ie);if(fe!==null)return fe}return null}try{let O={alpha:!0,depth:r,stencil:s,antialias:a,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:d,failIfMajorPerformanceCaveat:u};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${fk}`),t.addEventListener("webglcontextlost",Pe,!1),t.addEventListener("webglcontextrestored",ue,!1),t.addEventListener("webglcontextcreationerror",Ee,!1),W===null){let ie=["webgl2","webgl","experimental-webgl"];if(x.isWebGL1Renderer===!0&&ie.shift(),W=ke(ie,O),W===null)throw ke(ie)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}typeof WebGLRenderingContext<"u"&&W instanceof WebGLRenderingContext&&console.warn("THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163."),W.getShaderPrecisionFormat===void 0&&(W.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(O){throw console.error("THREE.WebGLRenderer: "+O.message),O}let ve,Ae,we,$e,pe,Oe,Ge,Xe,tt,N,C,q,B,T,P,G,X,H,he,Me,Le,Te,Se,He;function lt(){ve=new $Ve(W),Ae=new zVe(W,ve,e),ve.init(Ae),Te=new Eze(W,ve,Ae),we=new xze(W,ve,Ae),$e=new JVe(W),pe=new cze,Oe=new wze(W,ve,we,pe,Ae,Te,$e),Ge=new qVe(x),Xe=new jVe(x),tt=new oDe(W,Ae),Se=new VVe(W,ve,tt,Ae),N=new XVe(W,tt,$e,Se),C=new eFe(W,N,tt,$e),he=new QVe(W,Ae,Oe),G=new HVe(pe),q=new lze(x,Ge,Xe,ve,Ae,Se,G),B=new Mze(x,pe),T=new uze,P=new gze(ve,Ae),H=new UVe(x,Ge,Xe,we,C,p,l),X=new bze(x,C,Ae),He=new kze(W,$e,Ae,we),Me=new FVe(W,ve,$e,Ae),Le=new YVe(W,ve,$e,Ae),$e.programs=q.programs,x.capabilities=Ae,x.extensions=ve,x.properties=pe,x.renderLists=T,x.shadowMap=X,x.state=we,x.info=$e}lt();let $=new QM(x,W);this.xr=$,this.getContext=function(){return W},this.getContextAttributes=function(){return W.getContextAttributes()},this.forceContextLoss=function(){let O=ve.get("WEBGL_lose_context");O&&O.loseContext()},this.forceContextRestore=function(){let O=ve.get("WEBGL_lose_context");O&&O.restoreContext()},this.getPixelRatio=function(){return te},this.setPixelRatio=function(O){O!==void 0&&(te=O,this.setSize(Y,le,!1))},this.getSize=function(O){return O.set(Y,le)},this.setSize=function(O,ie,ce=!0){if($.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Y=O,le=ie,t.width=Math.floor(O*te),t.height=Math.floor(ie*te),ce===!0&&(t.style.width=O+"px",t.style.height=ie+"px"),this.setViewport(0,0,O,ie)},this.getDrawingBufferSize=function(O){return O.set(Y*te,le*te).floor()},this.setDrawingBufferSize=function(O,ie,ce){Y=O,le=ie,te=ce,t.width=Math.floor(O*ce),t.height=Math.floor(ie*ce),this.setViewport(0,0,O,ie)},this.getCurrentViewport=function(O){return O.copy(k)},this.getViewport=function(O){return O.copy(j)},this.setViewport=function(O,ie,ce,ne){O.isVector4?j.set(O.x,O.y,O.z,O.w):j.set(O,ie,ce,ne),we.viewport(k.copy(j).multiplyScalar(te).floor())},this.getScissor=function(O){return O.copy(U)},this.setScissor=function(O,ie,ce,ne){O.isVector4?U.set(O.x,O.y,O.z,O.w):U.set(O,ie,ce,ne),we.scissor(F.copy(U).multiplyScalar(te).floor())},this.getScissorTest=function(){return V},this.setScissorTest=function(O){we.setScissorTest(V=O)},this.setOpaqueSort=function(O){re=O},this.setTransparentSort=function(O){ae=O},this.getClearColor=function(O){return O.copy(H.getClearColor())},this.setClearColor=function(){H.setClearColor.apply(H,arguments)},this.getClearAlpha=function(){return H.getClearAlpha()},this.setClearAlpha=function(){H.setClearAlpha.apply(H,arguments)},this.clear=function(O=!0,ie=!0,ce=!0){let ne=0;if(O){let fe=!1;if(R!==null){let Re=R.texture.format;fe=Re===xme||Re===bme||Re===yme}if(fe){let Re=R.texture.type,De=Re===E0||Re===b0||Re===hk||Re===td||Re===gme||Re===_me,ze=H.getClearColor(),Ve=H.getClearAlpha(),Je=ze.r,We=ze.g,Ye=ze.b;De?(v[0]=Je,v[1]=We,v[2]=Ye,v[3]=Ve,W.clearBufferuiv(W.COLOR,0,v)):(_[0]=Je,_[1]=We,_[2]=Ye,_[3]=Ve,W.clearBufferiv(W.COLOR,0,_))}else ne|=W.COLOR_BUFFER_BIT}ie&&(ne|=W.DEPTH_BUFFER_BIT),ce&&(ne|=W.STENCIL_BUFFER_BIT),W.clear(ne)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Pe,!1),t.removeEventListener("webglcontextrestored",ue,!1),t.removeEventListener("webglcontextcreationerror",Ee,!1),T.dispose(),P.dispose(),pe.dispose(),Ge.dispose(),Xe.dispose(),C.dispose(),Se.dispose(),He.dispose(),q.dispose(),$.dispose(),$.removeEventListener("sessionstart",mt),$.removeEventListener("sessionend",Rn),se&&(se.dispose(),se=null),Xt.stop()};function Pe(O){O.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),S=!0}function ue(){console.log("THREE.WebGLRenderer: Context Restored."),S=!1;let O=$e.autoReset,ie=X.enabled,ce=X.autoUpdate,ne=X.needsUpdate,fe=X.type;lt(),$e.autoReset=O,X.enabled=ie,X.autoUpdate=ce,X.needsUpdate=ne,X.type=fe}function Ee(O){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",O.statusMessage)}function Ce(O){let ie=O.target;ie.removeEventListener("dispose",Ce),ot(ie)}function ot(O){pt(O),pe.remove(O)}function pt(O){let ie=pe.get(O).programs;ie!==void 0&&(ie.forEach(function(ce){q.releaseProgram(ce)}),O.isShaderMaterial&&q.releaseShaderCache(O))}this.renderBufferDirect=function(O,ie,ce,ne,fe,Re){ie===null&&(ie=xe);let De=fe.isMesh&&fe.matrixWorld.determinant()<0,ze=nt(O,ie,ce,ne,fe);we.setMaterial(ne,De);let Ve=ce.index,Je=1;if(ne.wireframe===!0){if(Ve=N.getWireframeAttribute(ce),Ve===void 0)return;Je=2}let We=ce.drawRange,Ye=ce.attributes.position,rt=We.start*Je,dt=(We.start+We.count)*Je;Re!==null&&(rt=Math.max(rt,Re.start*Je),dt=Math.min(dt,(Re.start+Re.count)*Je)),Ve!==null?(rt=Math.max(rt,0),dt=Math.min(dt,Ve.count)):Ye!=null&&(rt=Math.max(rt,0),dt=Math.min(dt,Ye.count));let qt=dt-rt;if(qt<0||qt===1/0)return;Se.setup(fe,ne,ze,ce,Ve);let sn,vt=Me;if(Ve!==null&&(sn=tt.get(Ve),vt=Le,vt.setIndex(sn)),fe.isMesh)ne.wireframe===!0?(we.setLineWidth(ne.wireframeLinewidth*ye()),vt.setMode(W.LINES)):vt.setMode(W.TRIANGLES);else if(fe.isLine){let Ze=ne.linewidth;Ze===void 0&&(Ze=1),we.setLineWidth(Ze*ye()),fe.isLineSegments?vt.setMode(W.LINES):fe.isLineLoop?vt.setMode(W.LINE_LOOP):vt.setMode(W.LINE_STRIP)}else fe.isPoints?vt.setMode(W.POINTS):fe.isSprite&&vt.setMode(W.TRIANGLES);if(fe.isInstancedMesh)vt.renderInstances(rt,qt,fe.count);else if(ce.isInstancedBufferGeometry){let Ze=ce._maxInstanceCount!==void 0?ce._maxInstanceCount:1/0,ki=Math.min(ce.instanceCount,Ze);vt.renderInstances(rt,qt,ki)}else vt.render(rt,qt)},this.compile=function(O,ie){function ce(ne,fe,Re){ne.transparent===!0&&ne.side===Yi&&ne.forceSinglePass===!1?(ne.side=wi,ne.needsUpdate=!0,Ie(ne,fe,Re),ne.side=Xs,ne.needsUpdate=!0,Ie(ne,fe,Re),ne.side=Yi):Ie(ne,fe,Re)}y=P.get(O),y.init(),w.push(y),O.traverseVisible(function(ne){ne.isLight&&ne.layers.test(ie.layers)&&(y.pushLight(ne),ne.castShadow&&y.pushShadow(ne))}),y.setupLights(x._useLegacyLights),O.traverse(function(ne){let fe=ne.material;if(fe)if(Array.isArray(fe))for(let Re=0;Re<fe.length;Re++){let De=fe[Re];ce(De,O,ne)}else ce(fe,O,ne)}),w.pop(),y=null};let Tt=null;function In(O){Tt&&Tt(O)}function mt(){Xt.stop()}function Rn(){Xt.start()}let Xt=new kme;Xt.setAnimationLoop(In),typeof self<"u"&&Xt.setContext(self),this.setAnimationLoop=function(O){Tt=O,$.setAnimationLoop(O),O===null?Xt.stop():Xt.start()},$.addEventListener("sessionstart",mt),$.addEventListener("sessionend",Rn),this.render=function(O,ie){if(ie!==void 0&&ie.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(S===!0)return;O.matrixWorldAutoUpdate===!0&&O.updateMatrixWorld(),ie.parent===null&&ie.matrixWorldAutoUpdate===!0&&ie.updateMatrixWorld(),$.enabled===!0&&$.isPresenting===!0&&($.cameraAutoUpdate===!0&&$.updateCamera(ie),ie=$.getCamera()),O.isScene===!0&&O.onBeforeRender(x,O,ie,R),y=P.get(O,w.length),y.init(),w.push(y),oe.multiplyMatrices(ie.projectionMatrix,ie.matrixWorldInverse),J.setFromProjectionMatrix(oe),Q=this.localClippingEnabled,ee=G.init(this.clippingPlanes,Q),b=T.get(O,g.length),b.init(),g.push(b),q0(O,ie,0,x.sortObjects),b.finish(),x.sortObjects===!0&&b.sort(re,ae),this.info.render.frame++,ee===!0&&G.beginShadows();let ce=y.state.shadowsArray;if(X.render(ce,O,ie),ee===!0&&G.endShadows(),this.info.autoReset===!0&&this.info.reset(),H.render(b,O),y.setupLights(x._useLegacyLights),ie.isArrayCamera){let ne=ie.cameras;for(let fe=0,Re=ne.length;fe<Re;fe++){let De=ne[fe];dl(b,O,De,De.viewport)}}else dl(b,O,ie);R!==null&&(Oe.updateMultisampleRenderTarget(R),Oe.updateRenderTargetMipmap(R)),O.isScene===!0&&O.onAfterRender(x,O,ie),Se.resetDefaultState(),L=-1,M=null,w.pop(),w.length>0?y=w[w.length-1]:y=null,g.pop(),g.length>0?b=g[g.length-1]:b=null};function q0(O,ie,ce,ne){if(O.visible===!1)return;if(O.layers.test(ie.layers)){if(O.isGroup)ce=O.renderOrder;else if(O.isLOD)O.autoUpdate===!0&&O.update(ie);else if(O.isLight)y.pushLight(O),O.castShadow&&y.pushShadow(O);else if(O.isSprite){if(!O.frustumCulled||J.intersectsSprite(O)){ne&&_e.setFromMatrixPosition(O.matrixWorld).applyMatrix4(oe);let De=C.update(O),ze=O.material;ze.visible&&b.push(O,De,ze,ce,_e.z,null)}}else if((O.isMesh||O.isLine||O.isPoints)&&(!O.frustumCulled||J.intersectsObject(O))){let De=C.update(O),ze=O.material;if(ne&&(O.boundingSphere!==void 0?(O.boundingSphere===null&&O.computeBoundingSphere(),_e.copy(O.boundingSphere.center)):(De.boundingSphere===null&&De.computeBoundingSphere(),_e.copy(De.boundingSphere.center)),_e.applyMatrix4(O.matrixWorld).applyMatrix4(oe)),Array.isArray(ze)){let Ve=De.groups;for(let Je=0,We=Ve.length;Je<We;Je++){let Ye=Ve[Je],rt=ze[Ye.materialIndex];rt&&rt.visible&&b.push(O,De,rt,ce,_e.z,Ye)}}else ze.visible&&b.push(O,De,ze,ce,_e.z,null)}}let Re=O.children;for(let De=0,ze=Re.length;De<ze;De++)q0(Re[De],ie,ce,ne)}function dl(O,ie,ce,ne){let fe=O.opaque,Re=O.transmissive,De=O.transparent;y.setupLightsView(ce),ee===!0&&G.setGlobalState(x.clippingPlanes,ce),Re.length>0&&ge(fe,Re,ie,ce),ne&&we.viewport(k.copy(ne)),fe.length>0&&de(fe,ie,ce),Re.length>0&&de(Re,ie,ce),De.length>0&&de(De,ie,ce),we.buffers.depth.setTest(!0),we.buffers.depth.setMask(!0),we.buffers.color.setMask(!0),we.setPolygonOffset(!1)}function ge(O,ie,ce,ne){let fe=Ae.isWebGL2;se===null&&(se=new Za(1,1,{generateMipmaps:!0,type:ve.has("EXT_color_buffer_half_float")?Vp:E0,minFilter:Up,samples:fe?4:0})),x.getDrawingBufferSize(me),fe?se.setSize(me.x,me.y):se.setSize(OM(me.x),OM(me.y));let Re=x.getRenderTarget();x.setRenderTarget(se),x.getClearColor(D),z=x.getClearAlpha(),z<1&&x.setClearColor(16777215,.5),x.clear();let De=x.toneMapping;x.toneMapping=S0,de(O,ce,ne),Oe.updateMultisampleRenderTarget(se),Oe.updateRenderTargetMipmap(se);let ze=!1;for(let Ve=0,Je=ie.length;Ve<Je;Ve++){let We=ie[Ve],Ye=We.object,rt=We.geometry,dt=We.material,qt=We.group;if(dt.side===Yi&&Ye.layers.test(ne.layers)){let sn=dt.side;dt.side=wi,dt.needsUpdate=!0,be(Ye,ce,ne,rt,dt,qt),dt.side=sn,dt.needsUpdate=!0,ze=!0}}ze===!0&&(Oe.updateMultisampleRenderTarget(se),Oe.updateRenderTargetMipmap(se)),x.setRenderTarget(Re),x.setClearColor(D,z),x.toneMapping=De}function de(O,ie,ce){let ne=ie.isScene===!0?ie.overrideMaterial:null;for(let fe=0,Re=O.length;fe<Re;fe++){let De=O[fe],ze=De.object,Ve=De.geometry,Je=ne===null?De.material:ne,We=De.group;ze.layers.test(ce.layers)&&be(ze,ie,ce,Ve,Je,We)}}function be(O,ie,ce,ne,fe,Re){O.onBeforeRender(x,ie,ce,ne,fe,Re),O.modelViewMatrix.multiplyMatrices(ce.matrixWorldInverse,O.matrixWorld),O.normalMatrix.getNormalMatrix(O.modelViewMatrix),fe.onBeforeRender(x,ie,ce,ne,O,Re),fe.transparent===!0&&fe.side===Yi&&fe.forceSinglePass===!1?(fe.side=wi,fe.needsUpdate=!0,x.renderBufferDirect(ce,ie,ne,fe,O,Re),fe.side=Xs,fe.needsUpdate=!0,x.renderBufferDirect(ce,ie,ne,fe,O,Re),fe.side=Yi):x.renderBufferDirect(ce,ie,ne,fe,O,Re),O.onAfterRender(x,ie,ce,ne,fe,Re)}function Ie(O,ie,ce){ie.isScene!==!0&&(ie=xe);let ne=pe.get(O),fe=y.state.lights,Re=y.state.shadowsArray,De=fe.state.version,ze=q.getParameters(O,fe.state,Re,ie,ce),Ve=q.getProgramCacheKey(ze),Je=ne.programs;ne.environment=O.isMeshStandardMaterial?ie.environment:null,ne.fog=ie.fog,ne.envMap=(O.isMeshStandardMaterial?Xe:Ge).get(O.envMap||ne.environment),Je===void 0&&(O.addEventListener("dispose",Ce),Je=new Map,ne.programs=Je);let We=Je.get(Ve);if(We!==void 0){if(ne.currentProgram===We&&ne.lightsStateVersion===De)return Be(O,ze),We}else ze.uniforms=q.getUniforms(O),O.onBuild(ce,ze,x),O.onBeforeCompile(ze,x),We=q.acquireProgram(ze,Ve),Je.set(Ve,We),ne.uniforms=ze.uniforms;let Ye=ne.uniforms;(!O.isShaderMaterial&&!O.isRawShaderMaterial||O.clipping===!0)&&(Ye.clippingPlanes=G.uniform),Be(O,ze),ne.needsLights=Ht(O),ne.lightsStateVersion=De,ne.needsLights&&(Ye.ambientLightColor.value=fe.state.ambient,Ye.lightProbe.value=fe.state.probe,Ye.directionalLights.value=fe.state.directional,Ye.directionalLightShadows.value=fe.state.directionalShadow,Ye.spotLights.value=fe.state.spot,Ye.spotLightShadows.value=fe.state.spotShadow,Ye.rectAreaLights.value=fe.state.rectArea,Ye.ltc_1.value=fe.state.rectAreaLTC1,Ye.ltc_2.value=fe.state.rectAreaLTC2,Ye.pointLights.value=fe.state.point,Ye.pointLightShadows.value=fe.state.pointShadow,Ye.hemisphereLights.value=fe.state.hemi,Ye.directionalShadowMap.value=fe.state.directionalShadowMap,Ye.directionalShadowMatrix.value=fe.state.directionalShadowMatrix,Ye.spotShadowMap.value=fe.state.spotShadowMap,Ye.spotLightMatrix.value=fe.state.spotLightMatrix,Ye.spotLightMap.value=fe.state.spotLightMap,Ye.pointShadowMap.value=fe.state.pointShadowMap,Ye.pointShadowMatrix.value=fe.state.pointShadowMatrix);let rt=We.getUniforms(),dt=F1.seqWithValue(rt.seq,Ye);return ne.currentProgram=We,ne.uniformsList=dt,We}function Be(O,ie){let ce=pe.get(O);ce.outputColorSpace=ie.outputColorSpace,ce.instancing=ie.instancing,ce.instancingColor=ie.instancingColor,ce.skinning=ie.skinning,ce.morphTargets=ie.morphTargets,ce.morphNormals=ie.morphNormals,ce.morphColors=ie.morphColors,ce.morphTargetsCount=ie.morphTargetsCount,ce.numClippingPlanes=ie.numClippingPlanes,ce.numIntersection=ie.numClipIntersection,ce.vertexAlphas=ie.vertexAlphas,ce.vertexTangents=ie.vertexTangents,ce.toneMapping=ie.toneMapping}function nt(O,ie,ce,ne,fe){ie.isScene!==!0&&(ie=xe),Oe.resetTextureUnits();let Re=ie.fog,De=ne.isMeshStandardMaterial?ie.environment:null,ze=R===null?x.outputColorSpace:R.isXRRenderTarget===!0?R.texture.colorSpace:No,Ve=(ne.isMeshStandardMaterial?Xe:Ge).get(ne.envMap||De),Je=ne.vertexColors===!0&&!!ce.attributes.color&&ce.attributes.color.itemSize===4,We=!!ce.attributes.tangent&&(!!ne.normalMap||ne.anisotropy>0),Ye=!!ce.morphAttributes.position,rt=!!ce.morphAttributes.normal,dt=!!ce.morphAttributes.color,qt=S0;ne.toneMapped&&(R===null||R.isXRRenderTarget===!0)&&(qt=x.toneMapping);let sn=ce.morphAttributes.position||ce.morphAttributes.normal||ce.morphAttributes.color,vt=sn!==void 0?sn.length:0,Ze=pe.get(ne),ki=y.state.lights;if(ee===!0&&(Q===!0||O!==M)){let ln=O===M&&ne.id===L;G.setState(ne,O,ln)}let Et=!1;ne.version===Ze.__version?(Ze.needsLights&&Ze.lightsStateVersion!==ki.state.version||Ze.outputColorSpace!==ze||fe.isInstancedMesh&&Ze.instancing===!1||!fe.isInstancedMesh&&Ze.instancing===!0||fe.isSkinnedMesh&&Ze.skinning===!1||!fe.isSkinnedMesh&&Ze.skinning===!0||fe.isInstancedMesh&&Ze.instancingColor===!0&&fe.instanceColor===null||fe.isInstancedMesh&&Ze.instancingColor===!1&&fe.instanceColor!==null||Ze.envMap!==Ve||ne.fog===!0&&Ze.fog!==Re||Ze.numClippingPlanes!==void 0&&(Ze.numClippingPlanes!==G.numPlanes||Ze.numIntersection!==G.numIntersection)||Ze.vertexAlphas!==Je||Ze.vertexTangents!==We||Ze.morphTargets!==Ye||Ze.morphNormals!==rt||Ze.morphColors!==dt||Ze.toneMapping!==qt||Ae.isWebGL2===!0&&Ze.morphTargetsCount!==vt)&&(Et=!0):(Et=!0,Ze.__version=ne.version);let Zn=Ze.currentProgram;Et===!0&&(Zn=Ie(ne,ie,fe));let Ki=!1,pr=!1,Sr=!1,Dt=Zn.getUniforms(),ir=Ze.uniforms;if(we.useProgram(Zn.program)&&(Ki=!0,pr=!0,Sr=!0),ne.id!==L&&(L=ne.id,pr=!0),Ki||M!==O){Dt.setValue(W,"projectionMatrix",O.projectionMatrix),Dt.setValue(W,"viewMatrix",O.matrixWorldInverse);let ln=Dt.map.cameraPosition;ln!==void 0&&ln.setValue(W,_e.setFromMatrixPosition(O.matrixWorld)),Ae.logarithmicDepthBuffer&&Dt.setValue(W,"logDepthBufFC",2/(Math.log(O.far+1)/Math.LN2)),(ne.isMeshPhongMaterial||ne.isMeshToonMaterial||ne.isMeshLambertMaterial||ne.isMeshBasicMaterial||ne.isMeshStandardMaterial||ne.isShaderMaterial)&&Dt.setValue(W,"isOrthographic",O.isOrthographicCamera===!0),M!==O&&(M=O,pr=!0,Sr=!0)}if(fe.isSkinnedMesh){Dt.setOptional(W,fe,"bindMatrix"),Dt.setOptional(W,fe,"bindMatrixInverse");let ln=fe.skeleton;ln&&(Ae.floatVertexTextures?(ln.boneTexture===null&&ln.computeBoneTexture(),Dt.setValue(W,"boneTexture",ln.boneTexture,Oe),Dt.setValue(W,"boneTextureSize",ln.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let Xr=ce.morphAttributes;if((Xr.position!==void 0||Xr.normal!==void 0||Xr.color!==void 0&&Ae.isWebGL2===!0)&&he.update(fe,ce,Zn),(pr||Ze.receiveShadow!==fe.receiveShadow)&&(Ze.receiveShadow=fe.receiveShadow,Dt.setValue(W,"receiveShadow",fe.receiveShadow)),ne.isMeshGouraudMaterial&&ne.envMap!==null&&(ir.envMap.value=Ve,ir.flipEnvMap.value=Ve.isCubeTexture&&Ve.isRenderTargetTexture===!1?-1:1),pr&&(Dt.setValue(W,"toneMappingExposure",x.toneMappingExposure),Ze.needsLights&&wt(ir,Sr),Re&&ne.fog===!0&&B.refreshFogUniforms(ir,Re),B.refreshMaterialUniforms(ir,ne,te,le,se),F1.upload(W,Ze.uniformsList,ir,Oe)),ne.isShaderMaterial&&ne.uniformsNeedUpdate===!0&&(F1.upload(W,Ze.uniformsList,ir,Oe),ne.uniformsNeedUpdate=!1),ne.isSpriteMaterial&&Dt.setValue(W,"center",fe.center),Dt.setValue(W,"modelViewMatrix",fe.modelViewMatrix),Dt.setValue(W,"normalMatrix",fe.normalMatrix),Dt.setValue(W,"modelMatrix",fe.matrixWorld),ne.isShaderMaterial||ne.isRawShaderMaterial){let ln=ne.uniformsGroups;for(let qo=0,Ud=ln.length;qo<Ud;qo++)if(Ae.isWebGL2){let bs=ln[qo];He.update(bs,Zn),He.bind(bs,Zn)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return Zn}function wt(O,ie){O.ambientLightColor.needsUpdate=ie,O.lightProbe.needsUpdate=ie,O.directionalLights.needsUpdate=ie,O.directionalLightShadows.needsUpdate=ie,O.pointLights.needsUpdate=ie,O.pointLightShadows.needsUpdate=ie,O.spotLights.needsUpdate=ie,O.spotLightShadows.needsUpdate=ie,O.rectAreaLights.needsUpdate=ie,O.hemisphereLights.needsUpdate=ie}function Ht(O){return O.isMeshLambertMaterial||O.isMeshToonMaterial||O.isMeshPhongMaterial||O.isMeshStandardMaterial||O.isShadowMaterial||O.isShaderMaterial&&O.lights===!0}this.getActiveCubeFace=function(){return A},this.getActiveMipmapLevel=function(){return I},this.getRenderTarget=function(){return R},this.setRenderTargetTextures=function(O,ie,ce){pe.get(O.texture).__webglTexture=ie,pe.get(O.depthTexture).__webglTexture=ce;let ne=pe.get(O);ne.__hasExternalTextures=!0,ne.__hasExternalTextures&&(ne.__autoAllocateDepthBuffer=ce===void 0,ne.__autoAllocateDepthBuffer||ve.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),ne.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(O,ie){let ce=pe.get(O);ce.__webglFramebuffer=ie,ce.__useDefaultFramebuffer=ie===void 0},this.setRenderTarget=function(O,ie=0,ce=0){R=O,A=ie,I=ce;let ne=!0,fe=null,Re=!1,De=!1;if(O){let Ve=pe.get(O);Ve.__useDefaultFramebuffer!==void 0?(we.bindFramebuffer(W.FRAMEBUFFER,null),ne=!1):Ve.__webglFramebuffer===void 0?Oe.setupRenderTarget(O):Ve.__hasExternalTextures&&Oe.rebindTextures(O,pe.get(O.texture).__webglTexture,pe.get(O.depthTexture).__webglTexture);let Je=O.texture;(Je.isData3DTexture||Je.isDataArrayTexture||Je.isCompressedArrayTexture)&&(De=!0);let We=pe.get(O).__webglFramebuffer;O.isWebGLCubeRenderTarget?(Array.isArray(We[ie])?fe=We[ie][ce]:fe=We[ie],Re=!0):Ae.isWebGL2&&O.samples>0&&Oe.useMultisampledRTT(O)===!1?fe=pe.get(O).__webglMultisampledFramebuffer:Array.isArray(We)?fe=We[ce]:fe=We,k.copy(O.viewport),F.copy(O.scissor),Z=O.scissorTest}else k.copy(j).multiplyScalar(te).floor(),F.copy(U).multiplyScalar(te).floor(),Z=V;if(we.bindFramebuffer(W.FRAMEBUFFER,fe)&&Ae.drawBuffers&&ne&&we.drawBuffers(O,fe),we.viewport(k),we.scissor(F),we.setScissorTest(Z),Re){let Ve=pe.get(O.texture);W.framebufferTexture2D(W.FRAMEBUFFER,W.COLOR_ATTACHMENT0,W.TEXTURE_CUBE_MAP_POSITIVE_X+ie,Ve.__webglTexture,ce)}else if(De){let Ve=pe.get(O.texture),Je=ie||0;W.framebufferTextureLayer(W.FRAMEBUFFER,W.COLOR_ATTACHMENT0,Ve.__webglTexture,ce||0,Je)}L=-1},this.readRenderTargetPixels=function(O,ie,ce,ne,fe,Re,De){if(!(O&&O.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ze=pe.get(O).__webglFramebuffer;if(O.isWebGLCubeRenderTarget&&De!==void 0&&(ze=ze[De]),ze){we.bindFramebuffer(W.FRAMEBUFFER,ze);try{let Ve=O.texture,Je=Ve.format,We=Ve.type;if(Je!==$s&&Te.convert(Je)!==W.getParameter(W.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Ye=We===Vp&&(ve.has("EXT_color_buffer_half_float")||Ae.isWebGL2&&ve.has("EXT_color_buffer_float"));if(We!==E0&&Te.convert(We)!==W.getParameter(W.IMPLEMENTATION_COLOR_READ_TYPE)&&!(We===x0&&(Ae.isWebGL2||ve.has("OES_texture_float")||ve.has("WEBGL_color_buffer_float")))&&!Ye){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}ie>=0&&ie<=O.width-ne&&ce>=0&&ce<=O.height-fe&&W.readPixels(ie,ce,ne,fe,Te.convert(Je),Te.convert(We),Re)}finally{let Ve=R!==null?pe.get(R).__webglFramebuffer:null;we.bindFramebuffer(W.FRAMEBUFFER,Ve)}}},this.copyFramebufferToTexture=function(O,ie,ce=0){let ne=Math.pow(2,-ce),fe=Math.floor(ie.image.width*ne),Re=Math.floor(ie.image.height*ne);Oe.setTexture2D(ie,0),W.copyTexSubImage2D(W.TEXTURE_2D,ce,0,0,O.x,O.y,fe,Re),we.unbindTexture()},this.copyTextureToTexture=function(O,ie,ce,ne=0){let fe=ie.image.width,Re=ie.image.height,De=Te.convert(ce.format),ze=Te.convert(ce.type);Oe.setTexture2D(ce,0),W.pixelStorei(W.UNPACK_FLIP_Y_WEBGL,ce.flipY),W.pixelStorei(W.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ce.premultiplyAlpha),W.pixelStorei(W.UNPACK_ALIGNMENT,ce.unpackAlignment),ie.isDataTexture?W.texSubImage2D(W.TEXTURE_2D,ne,O.x,O.y,fe,Re,De,ze,ie.image.data):ie.isCompressedTexture?W.compressedTexSubImage2D(W.TEXTURE_2D,ne,O.x,O.y,ie.mipmaps[0].width,ie.mipmaps[0].height,De,ie.mipmaps[0].data):W.texSubImage2D(W.TEXTURE_2D,ne,O.x,O.y,De,ze,ie.image),ne===0&&ce.generateMipmaps&&W.generateMipmap(W.TEXTURE_2D),we.unbindTexture()},this.copyTextureToTexture3D=function(O,ie,ce,ne,fe=0){if(x.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Re=O.max.x-O.min.x+1,De=O.max.y-O.min.y+1,ze=O.max.z-O.min.z+1,Ve=Te.convert(ne.format),Je=Te.convert(ne.type),We;if(ne.isData3DTexture)Oe.setTexture3D(ne,0),We=W.TEXTURE_3D;else if(ne.isDataArrayTexture)Oe.setTexture2DArray(ne,0),We=W.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}W.pixelStorei(W.UNPACK_FLIP_Y_WEBGL,ne.flipY),W.pixelStorei(W.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ne.premultiplyAlpha),W.pixelStorei(W.UNPACK_ALIGNMENT,ne.unpackAlignment);let Ye=W.getParameter(W.UNPACK_ROW_LENGTH),rt=W.getParameter(W.UNPACK_IMAGE_HEIGHT),dt=W.getParameter(W.UNPACK_SKIP_PIXELS),qt=W.getParameter(W.UNPACK_SKIP_ROWS),sn=W.getParameter(W.UNPACK_SKIP_IMAGES),vt=ce.isCompressedTexture?ce.mipmaps[0]:ce.image;W.pixelStorei(W.UNPACK_ROW_LENGTH,vt.width),W.pixelStorei(W.UNPACK_IMAGE_HEIGHT,vt.height),W.pixelStorei(W.UNPACK_SKIP_PIXELS,O.min.x),W.pixelStorei(W.UNPACK_SKIP_ROWS,O.min.y),W.pixelStorei(W.UNPACK_SKIP_IMAGES,O.min.z),ce.isDataTexture||ce.isData3DTexture?W.texSubImage3D(We,fe,ie.x,ie.y,ie.z,Re,De,ze,Ve,Je,vt.data):ce.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),W.compressedTexSubImage3D(We,fe,ie.x,ie.y,ie.z,Re,De,ze,Ve,vt.data)):W.texSubImage3D(We,fe,ie.x,ie.y,ie.z,Re,De,ze,Ve,Je,vt),W.pixelStorei(W.UNPACK_ROW_LENGTH,Ye),W.pixelStorei(W.UNPACK_IMAGE_HEIGHT,rt),W.pixelStorei(W.UNPACK_SKIP_PIXELS,dt),W.pixelStorei(W.UNPACK_SKIP_ROWS,qt),W.pixelStorei(W.UNPACK_SKIP_IMAGES,sn),fe===0&&ne.generateMipmaps&&W.generateMipmap(We),we.unbindTexture()},this.initTexture=function(O){O.isCubeTexture?Oe.setTextureCube(O,0):O.isData3DTexture?Oe.setTexture3D(O,0):O.isDataArrayTexture||O.isCompressedArrayTexture?Oe.setTexture2DArray(O,0):Oe.setTexture2D(O,0),we.unbindTexture()},this.resetState=function(){A=0,I=0,R=null,we.reset(),Se.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Ja}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===Mn?rd:wme}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===rd?Mn:No}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(e){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=e}},tk=class extends ek{};tk.prototype.isWebGL1Renderer=!0;var k0=class extends od{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new un(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new un(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Sme,this.normalScale=new Qt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}};function y0(i,e,t){return Pme(i)?new i.constructor(i.subarray(e,t!==void 0?t:i.length)):i.slice(e,t)}function c_(i,e,t){return!i||!t&&i.constructor===e?i:typeof e.BYTES_PER_ELEMENT=="number"?new e(i):Array.prototype.slice.call(i)}function Pme(i){return ArrayBuffer.isView(i)&&!(i instanceof DataView)}var W1=class{constructor(e,t,n,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,n=this._cachedIndex,r=t[n],s=t[n-1];n:{e:{let o;t:{r:if(!(e<r)){for(let a=n+2;;){if(r===void 0){if(e<s)break r;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===a)break;if(s=r,r=t[++n],e<r)break e}o=t.length;break t}if(!(e>=s)){let a=t[1];e<a&&(n=2,s=a);for(let l=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(r=s,s=t[--n-1],e>=s)break e}o=n,n=0;break t}break n}for(;n<o;){let a=n+o>>>1;e<t[a]?o=a:n=a+1}if(r=t[n],s=t[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(r===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,r)}return this.interpolate_(n,s,e,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,s=e*r;for(let o=0;o!==r;++o)t[o]=n[s+o];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},nk=class extends W1{constructor(e,t,n,r){super(e,t,n,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:E5e,endingEnd:E5e}}intervalChanged_(e,t,n){let r=this.parameterPositions,s=e-2,o=e+1,a=r[s],l=r[o];if(a===void 0)switch(this.getSettings_().endingStart){case A5e:s=e,a=2*t-n;break;case M5e:s=r.length-2,a=t+r[s]-r[s+1];break;default:s=e,a=n}if(l===void 0)switch(this.getSettings_().endingEnd){case A5e:o=e,l=2*n-t;break;case M5e:o=1,l=n+r[1]-r[0];break;default:o=e-1,l=t}let c=(n-t)*.5,d=this.valueSize;this._weightPrev=c/(t-a),this._weightNext=c/(l-n),this._offsetPrev=s*d,this._offsetNext=o*d}interpolate_(e,t,n,r){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,c=l-a,d=this._offsetPrev,u=this._offsetNext,p=this._weightPrev,v=this._weightNext,_=(n-t)/(r-t),b=_*_,y=b*_,g=-p*y+2*p*b-p*_,w=(1+p)*y+(-1.5-2*p)*b+(-.5+p)*_+1,x=(-1-v)*y+(1.5+v)*b+.5*_,S=v*y-v*b;for(let A=0;A!==a;++A)s[A]=g*o[d+A]+w*o[c+A]+x*o[l+A]+S*o[u+A];return s}},rk=class extends W1{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=e*a,c=l-a,d=(n-t)/(r-t),u=1-d;for(let p=0;p!==a;++p)s[p]=o[c+p]*u+o[l+p]*d;return s}},ik=class extends W1{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e){return this.copySampleValue_(e-1)}},Js=class{constructor(e,t,n,r){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=c_(t,this.TimeBufferType),this.values=c_(n,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(e){let t=e.constructor,n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:c_(e.times,Array),values:c_(e.values,Array)};let r=e.getInterpolation();r!==e.DefaultInterpolation&&(n.interpolation=r)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new ik(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new rk(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new nk(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case d_:t=this.InterpolantFactoryMethodDiscrete;break;case u_:t=this.InterpolantFactoryMethodLinear;break;case iM:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){let n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return d_;case this.InterpolantFactoryMethodLinear:return u_;case this.InterpolantFactoryMethodSmooth:return iM}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){let t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]+=e}return this}scale(e){if(e!==1){let t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]*=e}return this}trim(e,t){let n=this.times,r=n.length,s=0,o=r-1;for(;s!==r&&n[s]<e;)++s;for(;o!==-1&&n[o]>t;)--o;if(++o,s!==0||o!==r){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=y0(n,s,o),this.values=y0(this.values,s*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,r=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){let l=n[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(r!==void 0&&Pme(r))for(let a=0,l=r.length;a!==l;++a){let c=r[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){let e=y0(this.times),t=y0(this.values),n=this.getValueSize(),r=this.getInterpolation()===iM,s=e.length-1,o=1;for(let a=1;a<s;++a){let l=!1,c=e[a],d=e[a+1];if(c!==d&&(a!==1||c!==e[0]))if(r)l=!0;else{let u=a*n,p=u-n,v=u+n;for(let _=0;_!==n;++_){let b=t[u+_];if(b!==t[p+_]||b!==t[v+_]){l=!0;break}}}if(l){if(a!==o){e[o]=e[a];let u=a*n,p=o*n;for(let v=0;v!==n;++v)t[p+v]=t[u+v]}++o}}if(s>0){e[o]=e[s];for(let a=s*n,l=o*n,c=0;c!==n;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=y0(e,0,o),this.values=y0(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=y0(this.times,0),t=y0(this.values,0),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Js.prototype.TimeBufferType=Float32Array;Js.prototype.ValueBufferType=Float32Array;Js.prototype.DefaultInterpolation=u_;var ld=class extends Js{};ld.prototype.ValueTypeName="bool";ld.prototype.ValueBufferType=Array;ld.prototype.DefaultInterpolation=d_;ld.prototype.InterpolantFactoryMethodLinear=void 0;ld.prototype.InterpolantFactoryMethodSmooth=void 0;var sk=class extends Js{};sk.prototype.ValueTypeName="color";var ok=class extends Js{};ok.prototype.ValueTypeName="number";var ak=class extends W1{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(r-t),c=e*a;for(let d=c+a;c!==d;c+=4)M0.slerpFlat(s,0,o,c-a,o,c,l);return s}},zp=class extends Js{InterpolantFactoryMethodLinear(e){return new ak(this.times,this.values,this.getValueSize(),e)}};zp.prototype.ValueTypeName="quaternion";zp.prototype.DefaultInterpolation=u_;zp.prototype.InterpolantFactoryMethodSmooth=void 0;var cd=class extends Js{};cd.prototype.ValueTypeName="string";cd.prototype.ValueBufferType=Array;cd.prototype.DefaultInterpolation=d_;cd.prototype.InterpolantFactoryMethodLinear=void 0;cd.prototype.InterpolantFactoryMethodSmooth=void 0;var lk=class extends Js{};lk.prototype.ValueTypeName="vector";var ck=class{constructor(e,t,n){let r=this,s=!1,o=0,a=0,l,c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(d){a++,s===!1&&r.onStart!==void 0&&r.onStart(d,o,a),s=!0},this.itemEnd=function(d){o++,r.onProgress!==void 0&&r.onProgress(d,o,a),o===a&&(s=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(d){r.onError!==void 0&&r.onError(d)},this.resolveURL=function(d){return l?l(d):d},this.setURLModifier=function(d){return l=d,this},this.addHandler=function(d,u){return c.push(d,u),this},this.removeHandler=function(d){let u=c.indexOf(d);return u!==-1&&c.splice(u,2),this},this.getHandler=function(d){for(let u=0,p=c.length;u<p;u+=2){let v=c[u],_=c[u+1];if(v.global&&(v.lastIndex=0),v.test(d))return _}return null}}},Tze=new ck,dk=class{constructor(e){this.manager=e!==void 0?e:Tze,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let n=this;return new Promise(function(r,s){n.load(e,r,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}};dk.DEFAULT_MATERIAL_NAME="__DEFAULT";var pk="\\[\\]\\.:\\/",Ize=new RegExp("["+pk+"]","g"),vk="[^"+pk+"]",Rze="[^"+pk.replace("\\.","")+"]",Cze=/((?:WC+[\/:])*)/.source.replace("WC",vk),Pze=/(WCOD+)?/.source.replace("WCOD",Rze),Lze=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",vk),Bze=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",vk),Oze=new RegExp("^"+Cze+Pze+Lze+Bze+"$"),Nze=["material","materials","bones","map"],uk=class{constructor(e,t,n){let r=n||An.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=n.length;r!==s;++r)n[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},An=class i{constructor(e,t,n){this.path=t,this.parsedPath=n||i.parseTrackName(t),this.node=i.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new i.Composite(e,t,n):new i(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Ize,"")}static parseTrackName(e){let t=Oze.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=n.nodeName.substring(r+1);Nze.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(s){for(let o=0;o<s.length;o++){let a=s[o];if(a.name===t||a.uuid===t)return a;let l=n(a.children);if(l)return l}return null},r=n(e.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)e[t++]=n[r]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){let n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,n=t.objectName,r=t.propertyName,s=t.propertyIndex;if(e||(e=i.findNode(this.rootNode,t.nodeName),this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(n){let c=t.objectIndex;switch(n){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let d=0;d<e.length;d++)if(e[d].name===c){c=d;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}e=e.material.map;break;default:if(e[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[n]}if(c!==void 0){if(e[c]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[c]}}let o=e[r];if(o===void 0){let c=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+c+"."+r+" but it wasn't found.",e);return}let a=this.Versioning.None;this.targetObject=e,e.needsUpdate!==void 0?a=this.Versioning.NeedsUpdate:e.matrixWorldNeedsUpdate!==void 0&&(a=this.Versioning.MatrixWorldNeedsUpdate);let l=this.BindingType.Direct;if(s!==void 0){if(r==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}l=this.BindingType.ArrayElement,this.resolvedProperty=o,this.propertyIndex=s}else o.fromArray!==void 0&&o.toArray!==void 0?(l=this.BindingType.HasFromToArray,this.resolvedProperty=o):Array.isArray(o)?(l=this.BindingType.EntireArray,this.resolvedProperty=o):this.propertyName=r;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};An.Composite=uk;An.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};An.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};An.prototype.GetterByBindingType=[An.prototype._getValue_direct,An.prototype._getValue_array,An.prototype._getValue_arrayElement,An.prototype._getValue_toArray];An.prototype.SetterByBindingTypeAndVersioning=[[An.prototype._setValue_direct,An.prototype._setValue_direct_setNeedsUpdate,An.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[An.prototype._setValue_array,An.prototype._setValue_array_setNeedsUpdate,An.prototype._setValue_array_setMatrixWorldNeedsUpdate],[An.prototype._setValue_arrayElement,An.prototype._setValue_arrayElement_setNeedsUpdate,An.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[An.prototype._setValue_fromArray,An.prototype._setValue_fromArray_setNeedsUpdate,An.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var Ian=new Float32Array(1);typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:fk}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=fk);function wk(i,e,t,n,r,s,o,a){let l=(R,L,M,k)=>[new Qt(R/o,1-k/a),new Qt(M/o,1-k/a),new Qt(M/o,1-L/a),new Qt(R/o,1-L/a)],c=l(e+s,t,e+n+s,t+s),d=l(e+n+s,t,e+n*2+s,t+s),u=l(e,t+s,e+s,t+s+r),p=l(e+s,t+s,e+n+s,t+s+r),v=l(e+n+s,t+s,e+n+s*2,t+r+s),_=l(e+n+s*2,t+s,e+n*2+s*2,t+r+s),b=i.attributes.uv,y=[v[3],v[2],v[0],v[1]],g=[u[3],u[2],u[0],u[1]],w=[c[3],c[2],c[0],c[1]],x=[d[0],d[1],d[3],d[2]],S=[p[3],p[2],p[0],p[1]],A=[_[3],_[2],_[0],_[1]],I=[];for(let R of[y,g,w,x,S,A])for(let L of R)I.push(L.x,L.y);b.set(new Float32Array(I)),b.needsUpdate=!0}function vs(i,e,t,n,r,s){wk(i,e,t,n,r,s,64,64)}function gk(i,e,t,n,r,s){wk(i,e,t,n,r,s,64,32)}var el=class extends ur{constructor(e,t){super(),Object.defineProperty(this,"innerLayer",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"outerLayer",{enumerable:!0,configurable:!0,writable:!0,value:t}),e.name="inner",t.name="outer"}},_k=class extends ur{constructor(){super(),Object.defineProperty(this,"head",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"body",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rightArm",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leftArm",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rightLeg",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leftLeg",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"modelListeners",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"slim",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"_map",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"layer1Material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"layer1MaterialBiased",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"layer2Material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"layer2MaterialBiased",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.layer1Material=new k0({side:Xs}),this.layer2Material=new k0({side:Yi,transparent:!0,alphaTest:1e-5}),this.layer1MaterialBiased=this.layer1Material.clone(),this.layer1MaterialBiased.polygonOffset=!0,this.layer1MaterialBiased.polygonOffsetFactor=1,this.layer1MaterialBiased.polygonOffsetUnits=1,this.layer2MaterialBiased=this.layer2Material.clone(),this.layer2MaterialBiased.polygonOffset=!0,this.layer2MaterialBiased.polygonOffsetFactor=1,this.layer2MaterialBiased.polygonOffsetUnits=1;let e=new Gn(8,8,8);vs(e,0,0,8,8,8);let t=new hn(e,this.layer1Material),n=new Gn(9,9,9);vs(n,32,0,8,8,8);let r=new hn(n,this.layer2Material);this.head=new el(t,r),this.head.name="head",this.head.add(t,r),t.position.y=4,r.position.y=4,this.add(this.head);let s=new Gn(8,12,4);vs(s,16,16,8,12,4);let o=new hn(s,this.layer1Material),a=new Gn(8.5,12.5,4.5);vs(a,16,32,8,12,4);let l=new hn(a,this.layer2Material);this.body=new el(o,l),this.body.name="body",this.body.add(o,l),this.body.position.y=-6,this.add(this.body);let c=new Gn,d=new hn(c,this.layer1MaterialBiased);this.modelListeners.push(()=>{d.scale.x=this.slim?3:4,d.scale.y=12,d.scale.z=4,vs(c,40,16,this.slim?3:4,12,4)});let u=new Gn,p=new hn(u,this.layer2MaterialBiased);this.modelListeners.push(()=>{p.scale.x=this.slim?3.5:4.5,p.scale.y=12.5,p.scale.z=4.5,vs(u,40,32,this.slim?3:4,12,4)});let v=new ur;v.add(d,p),this.modelListeners.push(()=>{v.position.x=this.slim?-.5:-1}),v.position.y=-4,this.rightArm=new el(d,p),this.rightArm.name="rightArm",this.rightArm.add(v),this.rightArm.position.x=-5,this.rightArm.position.y=-2,this.add(this.rightArm);let _=new Gn,b=new hn(_,this.layer1MaterialBiased);this.modelListeners.push(()=>{b.scale.x=this.slim?3:4,b.scale.y=12,b.scale.z=4,vs(_,32,48,this.slim?3:4,12,4)});let y=new Gn,g=new hn(y,this.layer2MaterialBiased);this.modelListeners.push(()=>{g.scale.x=this.slim?3.5:4.5,g.scale.y=12.5,g.scale.z=4.5,vs(y,48,48,this.slim?3:4,12,4)});let w=new ur;w.add(b,g),this.modelListeners.push(()=>{w.position.x=this.slim?.5:1}),w.position.y=-4,this.leftArm=new el(b,g),this.leftArm.name="leftArm",this.leftArm.add(w),this.leftArm.position.x=5,this.leftArm.position.y=-2,this.add(this.leftArm);let x=new Gn(4,12,4);vs(x,0,16,4,12,4);let S=new hn(x,this.layer1MaterialBiased),A=new Gn(4.5,12.5,4.5);vs(A,0,32,4,12,4);let I=new hn(A,this.layer2MaterialBiased),R=new ur;R.add(S,I),R.position.y=-6,this.rightLeg=new el(S,I),this.rightLeg.name="rightLeg",this.rightLeg.add(R),this.rightLeg.position.x=-1.9,this.rightLeg.position.y=-12,this.rightLeg.position.z=-.1,this.add(this.rightLeg);let L=new Gn(4,12,4);vs(L,16,48,4,12,4);let M=new hn(L,this.layer1MaterialBiased),k=new Gn(4.5,12.5,4.5);vs(k,0,48,4,12,4);let F=new hn(k,this.layer2MaterialBiased),Z=new ur;Z.add(M,F),Z.position.y=-6,this.leftLeg=new el(M,F),this.leftLeg.name="leftLeg",this.leftLeg.add(Z),this.leftLeg.position.x=1.9,this.leftLeg.position.y=-12,this.leftLeg.position.z=-.1,this.add(this.leftLeg),this.modelType="default"}get map(){return this._map}set map(e){this._map=e,this.layer1Material.map=e,this.layer1Material.needsUpdate=!0,this.layer1MaterialBiased.map=e,this.layer1MaterialBiased.needsUpdate=!0,this.layer2Material.map=e,this.layer2Material.needsUpdate=!0,this.layer2MaterialBiased.map=e,this.layer2MaterialBiased.needsUpdate=!0}get modelType(){return this.slim?"slim":"default"}set modelType(e){this.slim=e==="slim",this.modelListeners.forEach(t=>t())}getBodyParts(){return this.children.filter(e=>e instanceof el)}setInnerLayerVisible(e){this.getBodyParts().forEach(t=>t.innerLayer.visible=e)}setOuterLayerVisible(e){this.getBodyParts().forEach(t=>t.outerLayer.visible=e)}resetJoints(){this.head.rotation.set(0,0,0),this.leftArm.rotation.set(0,0,0),this.rightArm.rotation.set(0,0,0),this.leftLeg.rotation.set(0,0,0),this.rightLeg.rotation.set(0,0,0),this.body.rotation.set(0,0,0),this.head.position.y=0,this.body.position.y=-6,this.body.position.z=0,this.rightArm.position.x=-5,this.rightArm.position.y=-2,this.rightArm.position.z=0,this.leftArm.position.x=5,this.leftArm.position.y=-2,this.leftArm.position.z=0,this.rightLeg.position.x=-1.9,this.rightLeg.position.y=-12,this.rightLeg.position.z=-.1,this.leftLeg.position.x=1.9,this.leftLeg.position.y=-12,this.leftLeg.position.z=-.1}},yk=class extends ur{constructor(){super(),Object.defineProperty(this,"cape",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.material=new k0({side:Yi,transparent:!0,alphaTest:1e-5});let e=new Gn(10,16,1);gk(e,0,0,10,16,1),this.cape=new hn(e,this.material),this.cape.position.y=-8,this.cape.position.z=.5,this.add(this.cape)}get map(){return this.material.map}set map(e){this.material.map=e,this.material.needsUpdate=!0}},bk=class extends ur{constructor(){super(),Object.defineProperty(this,"leftWing",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rightWing",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.material=new k0({side:Yi,transparent:!0,alphaTest:1e-5});let e=new Gn(12,22,4);gk(e,22,0,10,20,2);let t=new hn(e,this.material);t.position.x=-5,t.position.y=-10,t.position.z=-1,this.leftWing=new ur,this.leftWing.add(t),this.add(this.leftWing);let n=new Gn(12,22,4);gk(n,22,0,10,20,2);let r=new hn(n,this.material);r.scale.x=-1,r.position.x=5,r.position.y=-10,r.position.z=-1,this.rightWing=new ur,this.rightWing.add(r),this.add(this.rightWing),this.leftWing.position.x=5,this.leftWing.rotation.x=.2617994,this.resetJoints()}resetJoints(){this.leftWing.rotation.y=.01,this.leftWing.rotation.z=.2617994,this.updateRightWing()}updateRightWing(){this.rightWing.position.x=-this.leftWing.position.x,this.rightWing.position.y=this.leftWing.position.y,this.rightWing.rotation.x=this.leftWing.rotation.x,this.rightWing.rotation.y=-this.leftWing.rotation.y,this.rightWing.rotation.z=-this.leftWing.rotation.z}get map(){return this.material.map}set map(e){this.material.map=e,this.material.needsUpdate=!0}},xk=class extends ur{constructor(){super(),Object.defineProperty(this,"rightEar",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leftEar",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"material",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.material=new k0({side:Xs});let e=new Gn(8,8,4/3);wk(e,0,0,6,6,1,14,7),this.rightEar=new hn(e,this.material),this.rightEar.name="rightEar",this.rightEar.position.x=-6,this.add(this.rightEar),this.leftEar=new hn(e,this.material),this.leftEar.name="leftEar",this.leftEar.position.x=6,this.add(this.leftEar)}get map(){return this.material.map}set map(e){this.material.map=e,this.material.needsUpdate=!0}},Lme=10.8*Math.PI/180,$1=class extends ur{constructor(){super(),Object.defineProperty(this,"skin",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cape",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"elytra",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"ears",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.skin=new _k,this.skin.name="skin",this.skin.position.y=8,this.add(this.skin),this.cape=new yk,this.cape.name="cape",this.cape.position.y=8,this.cape.position.z=-2,this.cape.rotation.x=Lme,this.cape.rotation.y=Math.PI,this.add(this.cape),this.elytra=new bk,this.elytra.name="elytra",this.elytra.position.y=8,this.elytra.position.z=-2,this.elytra.visible=!1,this.add(this.elytra),this.ears=new xk,this.ears.name="ears",this.ears.position.y=10,this.ears.position.z=2/3,this.ears.visible=!1,this.skin.head.add(this.ears)}get backEquipment(){return this.cape.visible?"cape":this.elytra.visible?"elytra":null}set backEquipment(e){this.cape.visible=e==="cape",this.elytra.visible=e==="elytra"}resetJoints(){this.skin.resetJoints(),this.cape.rotation.x=Lme,this.cape.position.y=8,this.cape.position.z=-2,this.elytra.position.y=8,this.elytra.position.z=-2,this.elytra.rotation.x=0,this.elytra.resetJoints()}};f();m();h();f();m();h();var I_=class{constructor(){Object.defineProperty(this,"speed",{enumerable:!0,configurable:!0,writable:!0,value:1}),Object.defineProperty(this,"paused",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"progress",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"currentId",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"progress0",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"animationObjects",{enumerable:!0,configurable:!0,writable:!0,value:new Map})}update(e,t){if(this.paused)return;let n=t*this.speed;this.animate(e,n),this.animationObjects.forEach((r,s)=>{let o=this.progress0.get(s);r(e,this.progress-o,s)}),this.progress+=n}addAnimation(e){let t=this.currentId++;return this.progress0.set(t,this.progress),this.animationObjects.set(t,e),t}removeAnimation(e){e!=null&&(this.animationObjects.delete(e),this.progress0.delete(e))}};f();m();h();f();m();h();var Dze=Object.defineProperty,Uze=(i,e,t)=>e in i?Dze(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,kn=(i,e,t)=>(Uze(i,typeof e!="symbol"?e+"":e,t),t);function Sk(i){let e=[i];if(i.extra&&i.extra.length!==0)for(let t of i.extra)e.push(...Sk(t));return e}var xt=class{constructor(i,e,t,n,r,s){this.key=i,this.value=e,this.name=t,this.code=n,this.cssForeground=r,this.cssBackground=s}applyToStyle(i){i[this.key]=this.value}matchStyle(i){return i[this.key]===this.value}static fromCode(i){let t="0123456789abcdefklmnor".indexOf(i);if(t)return this.list[t]}toString(){return`${xt.CONTROL_STRING}${this.code}`}},Tn=xt;kn(Tn,"CONTROL_STRING","\xA7");kn(Tn,"BLACK",new xt("color","black","BLACK","0",{color:"#000000"},{color:"#000000"}));kn(Tn,"DARK_BLUE",new xt("color","dark_blue","DARK_BLUE","1",{color:"#0000AA"},{color:"#00002A"}));kn(Tn,"DARK_GREEN",new xt("color","dark_green","DARK_GREEN","2",{color:"#00AA00"},{color:"#002A00"}));kn(Tn,"DARK_AQUA",new xt("color","dark_aqua","DARK_AQUA","3",{color:"#00AAAA"},{color:"#002A2A"}));kn(Tn,"DARK_RED",new xt("color","dark_red","DARK_RED","4",{color:"#AA0000"},{color:"#2A0000"}));kn(Tn,"DARK_PURPLE",new xt("color","dark_purple","DARK_PURPLE","5",{color:"#AA00AA"},{color:"#2A002A"}));kn(Tn,"GOLD",new xt("color","gold","GOLD","6",{color:"#FFAA00"},{color:"#2A2A00"}));kn(Tn,"GRAY",new xt("color","gray","GRAY","7",{color:"#AAAAAA"},{color:"#2A2A2A"}));kn(Tn,"DARK_GRAY",new xt("color","dark_gray","DARK_GRAY","8",{color:"#555555"},{color:"#151515"}));kn(Tn,"BLUE",new xt("color","blue","BLUE","9",{color:"#5555FF"},{color:"#15153F"}));kn(Tn,"GREEN",new xt("color","green","GREEN","a",{color:"#55FF55"},{color:"#153F15"}));kn(Tn,"AQUA",new xt("color","aqua","AQUA","b",{color:"#55FFFF"},{color:"#153F3F"}));kn(Tn,"RED",new xt("color","red","RED","c",{color:"#FF5555"},{color:"#3F1515"}));kn(Tn,"LIGHT_PURPLE",new xt("color","light_purple","LIGHT_PURPLE","d",{color:"#FF55FF"},{color:"#3F153F"}));kn(Tn,"YELLOW",new xt("color","yellow","YELLOW","e",{color:"#FFFF55"},{color:"#3F3F15"}));kn(Tn,"WHITE",new xt("color","white","WHITE","f",{color:"#FFFFFF"},{color:"#3F3F3F"}));kn(Tn,"OBFUSCATED",new xt("obfuscated",!0,"OBFUSCATED","k",{}));kn(Tn,"BOLD",new xt("bold",!0,"BOLD","l",{"font-weight":"bold"}));kn(Tn,"STRIKETHROUGH",new xt("strikethrough",!0,"STRIKETHROUGH","m",{"text-decoration":"line-through"}));kn(Tn,"UNDERLINE",new xt("underlined",!0,"UNDERLINE","n",{"text-decoration":"underline"}));kn(Tn,"ITALIC",new xt("italic",!0,"ITALIC","o",{"font-style":"italic"}));kn(Tn,"RESET",{name:"RESET",code:"r",applyToStyle(i){i.bold=!1,i.strikethrough=!1,i.underlined=!1,i.italic=!1,i.obfuscated=!1,i.color=void 0},matchStyle(i){return!1},cssBackground:{},cssForeground:{},toString(){return`${xt.CONTROL_STRING}r`}});kn(Tn,"list",[xt.BLACK,xt.DARK_BLUE,xt.DARK_GREEN,xt.DARK_AQUA,xt.DARK_RED,xt.DARK_PURPLE,xt.GOLD,xt.GRAY,xt.DARK_GRAY,xt.BLUE,xt.GREEN,xt.AQUA,xt.RED,xt.LIGHT_PURPLE,xt.YELLOW,xt.WHITE,xt.OBFUSCATED,xt.BOLD,xt.STRIKETHROUGH,xt.UNDERLINE,xt.ITALIC,xt.RESET]);var Jp=Yr($m(),1);kk();var y2e=Yr(Gme(),1),fT=Yr(bp(),1);f();m();h();f();m();h();var J1=i=>Math.max(0,Math.min(1,i)),Wme=(i,e,t)=>Math.max(e,Math.min(t,i)),Si=(i,e,t)=>i+(e-i)*t,oHe=i=>(i=(i+Math.PI)%(Math.PI*2),i<0&&(i+=Math.PI*2),i-Math.PI);function aHe(i){let e=i?.elytra;if(!e)return;if(typeof e.updateRightWing=="function"){e.updateRightWing();return}if(typeof e.updateRightWingRotation=="function"){e.updateRightWingRotation();return}let t=e.leftWing,n=e.rightWing;!t?.rotation||!n?.rotation||typeof n.rotation.copy=="function"&&(n.rotation.copy(t.rotation),n.rotation.z*=-1)}var $p=class extends I_{switchAnimationCallback;isRunning=!1;isMoving=!0;isCrouched=!1;moveAmount=0;runAmount=0;lookYaw=0;lookPitch=0;_dt=0;_phase=0;_idlePhase=0;_moveBlend=0;_runBlend=0;_crouchBlend=0;_lookYawBlend=0;_lookPitchBlend=0;_swingTime=null;_swingDuration=.25;_defaults=null;update(e,t){this._dt=t,super.update(e,t)}swingArm(){(this._swingTime===null||this._swingTime>=this._swingDuration/2)&&(this._swingTime=0)}resetLocomotion(){this._moveBlend=0,this._runBlend=0,this._crouchBlend=0,this._phase=0}_captureDefaults(e){let t=e?.skin;this._defaults={playerRot:e?.rotation?.clone?.(),bodyPos:t?.body?.position?.clone?.(),bodyRot:t?.body?.rotation?.clone?.(),leftArmPos:t?.leftArm?.position?.clone?.(),leftArmRot:t?.leftArm?.rotation?.clone?.(),rightArmPos:t?.rightArm?.position?.clone?.(),rightArmRot:t?.rightArm?.rotation?.clone?.(),leftLegPos:t?.leftLeg?.position?.clone?.(),leftLegRot:t?.leftLeg?.rotation?.clone?.(),rightLegPos:t?.rightLeg?.position?.clone?.(),rightLegRot:t?.rightLeg?.rotation?.clone?.(),headPos:t?.head?.position?.clone?.(),headRot:t?.head?.rotation?.clone?.(),capePos:e?.cape?.position?.clone?.(),capeRot:e?.cape?.rotation?.clone?.(),elytraPos:e?.elytra?.position?.clone?.(),elytraRot:e?.elytra?.rotation?.clone?.()}}_applyDefaults(e){let t=this._defaults;if(!t)return;let n=e?.skin,r=e?.cape,s=e?.elytra;t.playerRot&&e?.rotation&&e.rotation.copy(t.playerRot),t.bodyPos&&n?.body?.position&&n.body.position.copy(t.bodyPos),t.bodyRot&&n?.body?.rotation&&n.body.rotation.copy(t.bodyRot),t.leftArmPos&&n?.leftArm?.position&&n.leftArm.position.copy(t.leftArmPos),t.leftArmRot&&n?.leftArm?.rotation&&n.leftArm.rotation.copy(t.leftArmRot),t.rightArmPos&&n?.rightArm?.position&&n.rightArm.position.copy(t.rightArmPos),t.rightArmRot&&n?.rightArm?.rotation&&n.rightArm.rotation.copy(t.rightArmRot),t.leftLegPos&&n?.leftLeg?.position&&n.leftLeg.position.copy(t.leftLegPos),t.leftLegRot&&n?.leftLeg?.rotation&&n.leftLeg.rotation.copy(t.leftLegRot),t.rightLegPos&&n?.rightLeg?.position&&n.rightLeg.position.copy(t.rightLegPos),t.rightLegRot&&n?.rightLeg?.rotation&&n.rightLeg.rotation.copy(t.rightLegRot),t.headPos&&n?.head?.position&&n.head.position.copy(t.headPos),t.headRot&&n?.head?.rotation&&n.head.rotation.copy(t.headRot),t.capePos&&r?.position&&r.position.copy(t.capePos),t.capeRot&&r?.rotation&&r.rotation.copy(t.capeRot),t.elytraPos&&s?.position&&s.position.copy(t.elytraPos),t.elytraRot&&s?.rotation&&s.rotation.copy(t.elytraRot)}animate(e){let t=this._dt||0;this._defaults||this._captureDefaults(e),this._applyDefaults(e);let n=typeof this.moveAmount=="number"?this.moveAmount:this.isMoving?1:0,r=typeof this.runAmount=="number"?this.runAmount:this.isRunning?1:0,s=J1(n),o=J1(r),a=this.isCrouched?1:0,l=Math.min(1,t*8),c=Math.min(1,t*6),d=Math.min(1,t*7);this._moveBlend+=(s-this._moveBlend)*l,this._runBlend+=(o-this._runBlend)*c,this._crouchBlend+=(a-this._crouchBlend)*d;let u=J1(this._moveBlend),p=J1(this._runBlend),v=J1(this._crouchBlend),_=Si(8,10,p),b=Si(1,.55,v),y=_*b;this._phase+=t*y*u,this._idlePhase+=t*1.15;let g=this._phase+(p>.5?Math.PI*.5:0);if(this.switchAnimationCallback&&Math.abs(Math.sin(g))<.02){let M=this.switchAnimationCallback;this.switchAnimationCallback=null,M?.()}cHe(e,v);let w=80*Math.PI/180,x=75*Math.PI/180,S=Wme(oHe(this.lookYaw||0),-w,w),A=Wme(this.lookPitch||0,-x,x),I=Math.min(1,t*14);this._lookYawBlend+=(S-this._lookYawBlend)*I,this._lookPitchBlend+=(A-this._lookPitchBlend)*I,e?.skin?.head?.rotation&&(e.skin.head.rotation.y+=this._lookYawBlend,e.skin.head.rotation.x+=this._lookPitchBlend);let R=(1-u)*(1-.25*p);if(R>1e-4&&e?.skin){let L=Math.sin(this._idlePhase);e.skin.body.rotation.x+=L*.02*R,e.skin.head.rotation.x+=-L*.015*R,e.skin.leftArm.rotation.x+=L*.03*R,e.skin.rightArm.rotation.x+=-L*.03*R,e?.cape?.rotation&&(e.cape.rotation.x+=Math.sin(this._idlePhase*.7)*.03*R)}if(u>1e-4&&e?.skin){let L=Si(1,.85,v),M=Si(1,.7,v),k=Math.sin(g)*.5,F=Math.sin(g+Math.PI)*.5,Z=Math.cos(g+Math.PI)*1.3,D=Math.cos(g)*1.3;e.skin.leftLeg.rotation.x+=Si(k,Z,p)*u*L,e.skin.rightLeg.rotation.x+=Si(F,D,p)*u*L;let z=Math.sin(g+Math.PI)*.5,Y=Math.sin(g)*.5,le=Math.cos(g)*1.5,te=Math.cos(g+Math.PI)*1.5;e.skin.leftArm.rotation.x+=Si(z,le,p)*u*M,e.skin.rightArm.rotation.x+=Si(Y,te,p)*u*M;let re=Math.PI*.02,ae=Math.PI*.1,j=Si(re,ae,p),U=Math.cos(g)*.03+re,V=Math.cos(g+Math.PI)*.03-re,J=Math.cos(g)*.1+ae,ee=Math.cos(g+Math.PI)*.1-ae;e.skin.leftArm.rotation.z+=(Si(U,J,p)*u+j*.15*u)*M,e.skin.rightArm.rotation.z+=(Si(V,ee,p)*u-j*.15*u)*M,this._defaults?.playerRot&&(e.rotation.z=this._defaults.playerRot.z+Math.cos(g+Math.PI)*.01*p*u);let Q=Si(Math.PI*.06,Math.PI*.3,p),se=Si(Math.sin(g/1.5)*.06,Math.sin(g*2)*.1,p);e?.cape?.rotation&&(e.cape.rotation.x+=(Q+se)*u)}if(this._swingTime!==null){this._swingTime+=t;let L=Math.min(this._swingTime/this._swingDuration,1);lHe.animate(L,e,u>.2),L>=1&&(this._swingTime=null)}}},lHe={animate(i,e,t){if(!e?.skin?.rightArm?.rotation)return;let n=Math.sin(i*Math.PI);if(e.skin.rightArm.rotation.x=-.4537860552*2-2*n*.3,!t){let r=.01*Math.PI+.06;e.skin.rightArm.rotation.z=-n*.403+r,e.skin.body.rotation.y=-n*.06,e.skin.leftArm.rotation.x=-n*.077,e.skin.leftArm.rotation.z=-n*.015+.13-.05,e.skin.leftArm.position.z=n*.3,e.skin.leftArm.position.x=5-n*.05}}};function cHe(i,e){let t=i?.skin,n=i?.cape,r=i?.elytra;if(!t||!n)return;let s=J1(e),o=Math.abs(Math.sin(s*Math.PI/2));if(o<=1e-6)return;t.body.rotation.x+=.4537860552*o,t.body.position.z+=(1.3256181-3.4500310377)*o,t.body.position.y+=-2.103677462*o,n.position.y+=-1.851236166577372*o,n.rotation.x+=.294220265771*o,n.position.z+=(3.786619432-3.4500310377)*o,r?.position&&r.position.copy(n.position),r?.rotation&&r.rotation.copy(n.rotation),r?.rotation&&(r.rotation.x-=10.8*Math.PI/180),r?.leftWing?.rotation&&(r.leftWing.rotation.z=Si(.72,.26179944+.4582006,o)),aHe(i),t.head.position.y+=-3.618325234674*o;let a=.1*o,l=(3.618325234674-3.4500310377)*o,c=-2.53943318*o;t.leftArm.position.z+=l,t.rightArm.position.z+=l,t.leftArm.rotation.x+=.410367746202*o,t.rightArm.rotation.x+=.410367746202*o,t.leftArm.rotation.z+=a,t.rightArm.rotation.z+=-a,t.leftArm.position.y+=c,t.rightArm.position.y+=c,t.rightLeg.position.z+=-3.4500310377*o,t.leftLeg.position.z+=-3.4500310377*o}function Tk(i){let e=i.skin,t=[e.layer1Material,e.layer1MaterialBiased,e.layer2Material,e.layer2MaterialBiased];for(let n of t)n.transparent=!0,n.alphaTest=.1,n.depthWrite=!0}f();m();h();yt();function dHe(i,e){if(typeof document<"u"){let t=document.createElement("canvas");return t.width=i,t.height=e,t}return new OffscreenCanvas(i,e)}function uHe(i,e){let{depth:t,pixelSize:n}=e;if(i.width<=0||i.height<=0)throw new Error(`Invalid canvas dimensions: ${i.width}x${i.height}`);let s=i.getContext("2d").getImageData(0,0,i.width,i.height),{data:o}=s,a=i.width,l=i.height,c=t/2,d=n??1/Math.max(a,l),u=(R,L)=>{if(R<0||L<0||R>=a||L>=l)return!1;let M=(L*a+R)*4;return o[M+3]>128},p=[],v=[],_=[],b=[],y=0,g=(R,L,M,k,F,Z,D,z)=>(p.push(R,L,M),_.push(k,F),b.push(Z,D,z),y++),w=(R,L,M,k)=>{v.push(R,L,M,R,M,k)},x=(R,L)=>{let M=(R/a-.5)*d*a,k=-(L/l-.5)*d*l;return{x:M,y:k}},S=Array.from({length:l+1},()=>Array.from({length:a+1},()=>null)),A=Array.from({length:l+1},()=>Array.from({length:a+1},()=>null));for(let R=0;R<=l;R++)for(let L=0;L<=a;L++){let{x:M,y:k}=x(L-.5,R-.5),F=L/a,Z=R/l,D=!1,z=[[L-1,R-1],[L,R-1],[L-1,R],[L,R]];for(let[Y,le]of z)if(u(Y,le)){D=!0;break}D&&(S[R][L]=g(M,k,c,F,Z,0,0,1),A[R][L]=g(M,k,-c,F,Z,0,0,-1))}for(let R=0;R<l;R++)for(let L=0;L<a;L++){if(!u(L,R))continue;let M=S[R][L],k=S[R][L+1],F=S[R+1][L+1],Z=S[R+1][L],D=A[R][L],z=A[R][L+1],Y=A[R+1][L+1],le=A[R+1][L];M!==null&&k!==null&&F!==null&&Z!==null&&w(M,k,F,Z),D!==null&&z!==null&&Y!==null&&le!==null&&w(z,D,le,Y)}for(let R=0;R<l;R++)for(let L=0;L<a;L++){if(!u(L,R))continue;let M=(L+.5)/a,k=(R+.5)/l;if(!u(L-1,R)){let F=S[R][L],Z=S[R+1][L],D=A[R][L],z=A[R+1][L];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,-1,0,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,-1,0,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,-1,0,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,-1,0,0);w(Y,le,te,re)}}if(!u(L+1,R)){let F=S[R+1][L+1],Z=S[R][L+1],D=A[R+1][L+1],z=A[R][L+1];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,1,0,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,1,0,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,1,0,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,1,0,0);w(Y,le,te,re)}}if(!u(L,R-1)){let F=S[R][L],Z=S[R][L+1],D=A[R][L],z=A[R][L+1];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,0,-1,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,0,-1,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,0,-1,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,0,-1,0);w(Y,le,te,re)}}if(!u(L,R+1)){let F=S[R+1][L+1],Z=S[R+1][L],D=A[R+1][L+1],z=A[R+1][L];if(F!==null&&Z!==null&&D!==null&&z!==null){let Y=g(p[F*3],p[F*3+1],p[F*3+2],M,k,0,1,0),le=g(p[Z*3],p[Z*3+1],p[Z*3+2],M,k,0,1,0),te=g(p[z*3],p[z*3+1],p[z*3+2],M,k,0,1,0),re=g(p[D*3],p[D*3+1],p[D*3+2],M,k,0,1,0);w(Y,le,te,re)}}}let I=new it;return I.setAttribute("position",new qe(p,3)),I.setAttribute("uv",new qe(_,2)),I.setAttribute("normal",new qe(b,3)),I.setIndex(v),I.computeVertexNormals(),{geometry:I,totalVertices:y,totalTriangles:v.length/3}}function fHe(i,e){let{u:t,v:n,sizeX:r,sizeY:s}=e,o=Math.max(1,Math.floor(r*i.image.width)),a=Math.max(1,Math.floor(s*i.image.height)),l=dHe(o,a),c=l.getContext("2d");if(!c)throw new Error("Failed to get 2d context for item texture canvas");return c.imageSmoothingEnabled=!1,c.drawImage(i.image,t*i.image.width,n*i.image.height,r*i.image.width,s*i.image.height,0,0,l.width,l.height),l}function jme(i,e,t={}){let{faceCamera:n=!1,use3D:r=!0,depth:s=.04}=t,{u:o,v:a,sizeX:l,sizeY:c}=e;if(n){let b=i.clone();b.flipY=!0,b.offset.set(o,1-a-c),b.repeat.set(l,c),b.needsUpdate=!0,b.magFilter=Qe,b.minFilter=Qe;let y=new ns({map:b,transparent:!0,alphaTest:.1});return{mesh:new Oi(y),itemsTexture:b,cleanup(){b.dispose()}}}if(r)try{let b=fHe(i,e),{geometry:y}=uHe(b,{depth:s}),g=new mn(b);g.magFilter=Qe,g.minFilter=Qe,g.wrapS=g.wrapT=gn,g.flipY=!1,g.needsUpdate=!0;let w=new Lr({map:g,side:cn,transparent:!0,alphaTest:.1});return{mesh:new je(y,w),itemsTexture:g,cleanup(){g.dispose(),y.dispose(),w.map&&w.map.dispose(),w.dispose()}}}catch(b){console.warn("Failed to create 3D item mesh, falling back to 2D:",b)}let d=i.clone();d.flipY=!0,d.offset.set(o,1-a-c),d.repeat.set(l,c),d.needsUpdate=!0,d.magFilter=Qe,d.minFilter=Qe;let u=d.clone();u.repeat.x*=-1,u.needsUpdate=!0,u.offset.set(o+l,1-a-c);let p=new Lr({map:d,transparent:!0,alphaTest:.1}),v=new Lr({map:u,transparent:!0,alphaTest:.1});return{mesh:new je(new nn(1,1,0),[new st({color:0}),new st({color:0}),new st({color:0}),new st({color:0}),p,v]),itemsTexture:d,itemsTextureFlipped:u,cleanup(){d.dispose(),u.dispose(),p.dispose(),v.dispose()}}}f();m();h();yt();f();m();h();f();m();h();yt();var $me=parseInt(bo.replace(/\D+/g,""));f();m();h();yt();var hHe=/^[og]\s*(.+)?/,mHe=/^mtllib /,pHe=/^usemtl /,vHe=/^usemap /,Xme=new K,Ik=new K,Yme=new K,Jme=new K,gs=new K;function gHe(){let i={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let n=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(r,s){let o=this._finalize(!1);o&&(o.inherited||o.groupCount<=0)&&this.materials.splice(o.index,1);let a={index:this.materials.length,name:r||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:o!==void 0?o.smooth:this.smooth,groupStart:o!==void 0?o.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){let c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(a),a},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(r){let s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),r&&this.materials.length>1)for(let o=this.materials.length-1;o>=0;o--)this.materials[o].groupCount<=0&&this.materials.splice(o,1);return r&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},n&&n.name&&typeof n.clone=="function"){let r=n.clone(0);r.inherited=!0,this.object.materials.push(r)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseNormalIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseUVIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/2)*2},addVertex:function(e,t,n){let r=this.vertices,s=this.object.geometry.vertices;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[n+0],r[n+1],r[n+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){let r=this.normals,s=this.object.geometry.normals;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[n+0],r[n+1],r[n+2])},addFaceNormal:function(e,t,n){let r=this.vertices,s=this.object.geometry.normals;Xme.fromArray(r,e),Ik.fromArray(r,t),Yme.fromArray(r,n),gs.subVectors(Yme,Ik),Jme.subVectors(Xme,Ik),gs.cross(Jme),gs.normalize(),s.push(gs.x,gs.y,gs.z),s.push(gs.x,gs.y,gs.z),s.push(gs.x,gs.y,gs.z)},addColor:function(e,t,n){let r=this.colors,s=this.object.geometry.colors;r[e]!==void 0&&s.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&s.push(r[t+0],r[t+1],r[t+2]),r[n]!==void 0&&s.push(r[n+0],r[n+1],r[n+2])},addUV:function(e,t,n){let r=this.uvs,s=this.object.geometry.uvs;s.push(r[e+0],r[e+1]),s.push(r[t+0],r[t+1]),s.push(r[n+0],r[n+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,r,s,o,a,l,c){let d=this.vertices.length,u=this.parseVertexIndex(e,d),p=this.parseVertexIndex(t,d),v=this.parseVertexIndex(n,d);if(this.addVertex(u,p,v),this.addColor(u,p,v),a!==void 0&&a!==""){let _=this.normals.length;u=this.parseNormalIndex(a,_),p=this.parseNormalIndex(l,_),v=this.parseNormalIndex(c,_),this.addNormal(u,p,v)}else this.addFaceNormal(u,p,v);if(r!==void 0&&r!==""){let _=this.uvs.length;u=this.parseUVIndex(r,_),p=this.parseUVIndex(s,_),v=this.parseUVIndex(o,_),this.addUV(u,p,v),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let n=0,r=e.length;n<r;n++){let s=this.parseVertexIndex(e[n],t);this.addVertexPoint(s),this.addColor(s)}},addLineGeometry:function(e,t){this.object.geometry.type="Line";let n=this.vertices.length,r=this.uvs.length;for(let s=0,o=e.length;s<o;s++)this.addVertexLine(this.parseVertexIndex(e[s],n));for(let s=0,o=t.length;s<o;s++)this.addUVLine(this.parseUVIndex(t[s],r))}};return i.startObject("",!1),i}var K1=class extends nr{constructor(e){super(e),this.materials=null}load(e,t,n,r){let s=this,o=new Br(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{t(s.parse(a))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},n,r)}setMaterials(e){return this.materials=e,this}parse(e){let t=new gHe;e.indexOf(`\r
8043
8043
  `)!==-1&&(e=e.replace(/\r\n/g,`
8044
8044
  `)),e.indexOf(`\\
8045
8045
  `)!==-1&&(e=e.replace(/\\\n/g,""));let n=e.split(`
@@ -28778,7 +28778,7 @@ f 72/204/51 67/203/51 65/202/51 70/201/51
28778
28778
  f 71/208/52 72/207/52 70/206/52 69/205/52
28779
28779
  f 70/212/53 65/211/53 66/210/53 69/209/53
28780
28780
  f 71/216/54 68/215/54 67/214/54 72/213/54`;var sT={allay:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAV1BMVEUAAAA4jNkuh9Ypg9FBnNpCm9r///+c/P+A/P9k+/9N8/hM6f9Q2f8+5eo94PdG0P821+4s1ewiz/8syf8ox/8bxPNNq+wQwf8os+hCnNpCm9oep9s0h8D7j8AOAAAABnRSTlMAoKCg3PODq/XXAAAA60lEQVR42tWP0W7DIAxFb9OtwdA6xQ3rzZL//84BD0nRljzsZdqxZCx8hLio3Lz4GwtYMWLDi4jnPM+vwogNKTTC43Elr6vgRMQ1wvM5ktsbvRPXN38wGxKHMmnI9M65vgxavwsg2WCpCvlSg6iqlCF4ceKbFEGZVC+5NFFXYUtxZzILl1xmiffoxUcA5DUHKULZp6iqsQzU6KNWYcxBUMnp8A2mwWxAhTPR0qRYFs6sDT+zTMZpWj5pO8L0wamexJ9xXvm10J27rrQ94dSdOqC0PSFXPV4JRuwRzIxGHMB38O14j4N9Wf4/vgDzpRGDwkNeQQAAAABJRU5ErkJggg==",axolotl:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAP1BMVEUAAACvsv+zsPmmqv+nn/+GkPXWhCt+iOyBb+d1b/9odutodOyTWuRbb+NlZfS0W0xsV+JpVuNNWc82QZ86AGw+Ir4cAAAAAXRSTlMAQObYZgAAAUdJREFUeNrtk9FugzAMRXG4twFS1jbl/791cbJUQnuAmE2VKk5cKpDukeNA9zeAhP4mwDlgahdAEoDm1dAukIzmlXaB/HBcUGbQJCBkBejgkMrt3j5WeYGD0iAglkXkehVZFlBQ2b0FkKjtE2CjIIYEUfIhESdMCUyWoyBFZPZI+Nks8OUs/f7kXSsLgCxwiRbBl9YRgddazcC5lhnc/T1VFdQObDMIwdJBRQQhYNWBTTCXYzR0AMZIyOy9c373FuQFGXLJLzYFEJQvQSHKgwKwJQAF1BWqIBC6hNlKbAg0GPXyjDHkeqoj6iVAn4DdP/NQhuHxsAr6HroAswB52QUcySTgeGQGg3J8lPY55h7Q9705XQdpEgwaHXVhtHZQX6Whew+X+mfldsn5W3fEYM9fVjfm/pXShd1g38UrdvuIGZycnJy8kW/CDQ5IMRlUUgAAAABJRU5ErkJggg==",blaze:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAJ1BMVEUAAAD//////4T/+Ef/1Sj8shf8lgDReACrdQGLNAFsMQBfAgExDgs044iSAAAAAXRSTlMAQObYZgAAAPdJREFUeNrdzzFuAjEQheH3vNR4xtCkibyQA4CSCyAlfZocIjdKm4sFxAHwGKVmQo21Ts9X//IbE1evBfpBjG9ozXDlJZkKTkAr4IpShNVkMjiJ7wuUkwEJhcAmAzFGNcTJoFisJZph6heJiG7xDLT4XKRC4KiubvSf24kY6hiLnVPMVfE+NhPbo2Y3YVBfPA2/Q3PkchGGx++H4yZvd3GdNrjBr32FeDzPUdN88Mvn7QRHHiSX9SkMwnxYNTdkq7sDlMsLkZHRBEwBGaBpKnQ6GqsVegLIfrDOfOkGI0W7gQTN6JhJQlcYCOm+oJyjHyD+F7jg7v0B5TtIgi1mkx4AAAAASUVORK5CYII=",boat:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABABAMAAAAg+GJMAAAAG1BMVEX///8AAADCbT+6YzetXTKgVjCZUCuPTCqIRyg96zNeAAAAAnRSTlMAAHaTzTgAAAPOSURBVHja7VTLbus2EBX6XOcPimGzL3jG7rbIzChdFjap3GUB65Fl0ZtY/oFr67NLqoljFVDkRXFXOZZnQI/nmOYcnqL4se/7U59xyGGy+qtI+OanHDdWvOLmEkXxnWp1DKZqj43mVB2jakiroH+8EfhZgu8t2BdVC/opWCbKq6hppfbbG8F2juApxqp9RRPDp+G0f112hyF9/9tfxr+wmiF4NvZE6VmNMdyfWoAB3oHRHs4ENrsDgzYChcYc4/3eHhq1YFWOXfr+D3/mrjueIdhHgVgVhMcYu2c1a/dRY473ZwKPGYLh6Df0MzndjvFxeFoDW1glOT4Q2n6/81TcydwOyqHvhqHfH3I6NN3jcBoSDmM6Oq2GUxAqUM5OQTjEIGBhtm28b7Sq2pgnGWJbslWJ/cnP6+C5jGKKlUXvaePrh7axJmjT1ow1r7ns0kZOvpAwt4PSOyFHxBpFtL6vYQIBx6oxq1zZJ4IvVGy2s2NkgEO0ynYcY7yvg2pVNe1zp0lh+RD7/u9EMDvGath3w6k7jOkxH2I/5AMc0/HcJavZMToLEI0rckSrx+GztcGsqncQcHfuWtmskG69c3TriDlaFbvPNUSwEw5V0/bnLtLZMSqiCrOM2wgP+1A2eYSat/G2A8YcgVngChaj5G3kyxSqJ2vbRrBrD+cux7O3cXKd4+/T69z4HZFLj3u5tGvXTwmKuEXGCv0rLn9COELBlfqXSxvlvwS0oYxbGl5xSbDsieS33hP8ypG/cyBP7C/qy54I2TFUsE5xJyrKpVzUlz0RWgsEWiprrQLWUi/qy57Y79Ohp6frcsro2ov6sidSAI8GagJhAURxUV/2RG1ijM/pXcUzLurLnlhgOyeDjGVPzDqYymBSd/owHM+eOKMDAmHlHYknELtJnfvDcIz6jici7FjApQlqQGUtk/qv2RFbfccTEWqooDRkGUxUkHGbCfYyeuK8DrqzDCYqyKC+Hw9x3hMpMNYKmIIFIuBJfdkTsw4eJjKY1Jc9sQBGJbykfoJUX/TEgjw2BHKgjSM/TJDqi55I3rmNzwyUkvPkSQj5gzvv6GbZEzH6ADgK1xCDCtISlhJUbpY9EVFWdVSwxUY4WgDXMQgHrsHxCk9sX+ygzcjpctneLCL7gVhAaRaE2QRQBpeM8TXfOPWDf6VwVsN5GRe6l3VwDYHztElvuJQchgmuIaCEDdFForu3dAUBtpIHBnAevKmkzAJAa6heRTB2ytgBE6juFGBBLSwzXf+zDsaBrwUQiAnALChFwIB+DR28X/4g+CD4ILgW/wAFIWww3uybGQAAAABJRU5ErkJggg==",camel:"data:image/png;base64,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",cat:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAMAAACVQ462AAAATlBMVEXv9O3r8Oj72bPW1sz71Wf2ymD1yF7ywFnxv1jvt1Pqq0uvdh57bWJjSy9KMBc6Kh0RDxgAAADq6urOzs6vr7C+c3NanRJWU18kJDEcGCdfq47cAAAAEnRSTlMAAAAAAAAAAAAAAAAAAAAAAACVcz0/AAABUUlEQVR42t3T3VrCMAyA4Yi1SmtlSxSS+79Rkz6R0dEywTO/0rPyPst+IFhiMSJyAW+amJBFA08EEWBeBQtQ/1BKuRuY5yAusACo4ABSBUpFxbsCPkJKDgiLgAktANYYOFhyDlxQgFCFbUA6VaGg9lsAj3LExmBCi1i8MdDNBWJ5GBDmFmBhFuE7ANQWgInVY+q8B8wh58w8gy2rBxASIRJ2gVwBOOf3oAFQ6wL1kP0QeQU0AhRdIb5eAe+15V1vAWqB/X4E2PgrADtA3O/XgJ3WTSDeCJi8zcc4eAo+QroBsC7hC4AMOAspxGQNAUZdTDwAtkdAQrTdALQAMYX4FkIYA1VwoNZ+CynqCLeuIOSkAYyAqRZjFyDNAe8FytIOLuoCNv3hkLPtkP3k8xNc1RthZ6YiPwAMmmoAHUC028DGCKevkwg8DnxafwDmO/uHwDebkIAap1EwrQAAAABJRU5ErkJggg==",chicken:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAALVBMVEUAAAD////i4uL85XDT09PhzGLGxsbgu2nTrlrQqT/Bk0OWcjRjVkH/AAAAAADtfCsnAAAAAXRSTlMAQObYZgAAAO9JREFUeNrtzMFJxFAQxvFZrGAewaMwwxQg2IA7fMzZElQecxZswHZc7CAd2MM72IlJVoXEbATP+7998OMj2kmHW6LXQ9/T0AUt25UuB/D+dgQ317+AXLZ7OgxN4vmJ5vGxforGXhbgSj9ElFqjrxYXomN+GriqmqG1H3E3B7DmQN0A0Wpk0laqKlw2gKv9AdycbRNE1dgA1SOy0hTWQCIrgqaUlnGBqkLY4aeAq0FYfT/OFRBQVGERWQddAKh7ZuFVUCwqorow8166jgVzoBaZWV2FRZS5iM2BYwKwBzEfjJSYg/zOIx7hDk86948+AcUmS5dD8ZFCAAAAAElFTkSuQmCC",cod:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAJFBMVEX///8AAADr2sPWxa3KtJXCqIW2lmusiVmScVqEZVEiHyYAAAB2QJV6AAAAAnRSTlMAAHaTzTgAAACbSURBVHja7coxCsJAEIXh5w18RSRiZQT7sAS8Rgyz2kbYIN5CiDBbx8CewHM6QS3sLf1hivl4yMc626+ZCgKQzENVF6eSsaCVkRCRfCiZhFYwcM4t+13SqFdOwS6/Vw+5HA3qFyz7beOqriX9ezFsKmlcySn4lFKMMQiJGYWwR9VQyTnGmggh3M7eeyGBQ0u4TwZkR/C7P/weVk/OOkCzBdD8ogAAAABJRU5ErkJggg==",creeper:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAK2klEQVR42tWZ61NU5/3And+L3zTNdDpT08Q0NiamOtFG8cJlQa4uy22vsCzLLrssgtw0KooIMcaqFFFRXOSiQjA11lwIVRF1QRBW7gIuy9H1pLgpM9SZ/hmf7j4zzXT6Jn1jkTPzzNlzec6e7+f53s+yn9piOzdzwltJp3SdNrmZW1IHKc5E+ufvUDJhJndYR4/UTa5Pw8ePrWQ1mrjp/5qhhT76JRfLlvoWcXYzceei+EMAws7v06n070R9LpXxF0NktKSjuR1L7/wtSr3ZHBgsYNDfi8Gp5Za3gw7/1aUPIHkwjLSxKAytGg5KBZT1FOD3+/nkWTH75uwMzQ0w9sJNXk86X/nbyT5lpuqvhWSPJnFL/mrpAyh6bMI+osPUmEnetA7bPS0j824OeXdS6DbR4+ui23MDSZKYm5sT+3JvPoYuJU2e00sfQHrfdpTd4bh9A0LVi3stQsiqsV3sdtnF7wOTeZQ/ykeWZbzyY/IeGnDUOrgndy59AHG1CmxuHa1yPabmDF68eEHB5wVitXd2Z9Ev9XJkdhelXTYBQ1+nE5B2XilgcL536QPoePInrnmvsOz6MrT3NUzNj2NxWshx5uBodmB2ZmHo2c7M/BTGJgPWhmwRKfZM5nBwomDpAzD0a9gxYhQAXr/6Os8XvhcAhuUB0j/X4BjWUThnxNRjRD0Ry26fhYzzBg75Cyh/UPjqA1DPxKC/r6Td24RjVI+lJ42cOgtFY1nYh/Rcf/wFy7/9JZruBNrH24Wa1/gP8tn0XrTONEpnzOwbzaPl6VkB6Xe33iWpbjslwxby+4w898/hGDSwtzdPRI978i0+9lnZNW1FU5+2+ICyHqSgP6PjrHSUlBYV2t446qQTJN2PEgnQusa1ATAWElzh7H1UiKYhhTK/ncJ+k4Cx566D5AYl9z33gwDEuC13cGikhPl/PMfRZse90EvpkF1cW92+msrJQgrdWVzw1LL4Kt6ow+fz0em/ykXpnMj24k/GEn8+AMBTTvJoOKsy30KRvZlG+SzmS1m8q1sRPBYrWnilUHj/q1NX2dS1id989zY51VbMrZlIPi+H/1rMoYDArmnXj4CyhtScnq1h73j+4gOonCrih4UfMHuTyXmqpsN/DZd8gxb5LK2yE81UjBA4cCvFMyaSb0eK329FvUGVpzioDQJE/qwRi5TG9/5nYv7oC7fQkE/9JVQMltAr32PFzTf4xdev0/aojdimGJTuMP6vbdnPFhWAozsDkcpOWcXqKFyh2CU16uloqqUjnJZOUOgy0yTXs1L/Br/VvMmw5CblrIpcr4bM7kQhaPXf9lPeJ7RBCH3YU0qLVMdl2UnR7WwkeZY94zmUDxaKOsLQoqPoSebia0DecDoXZScJDbECwPKOX5E3qSX+dhjX59r4s9RK+kWdUPnA7WKsMq2gWDYxKPWxe9gmkh/9ZQ2Vo6UiTzgwvYMDDwuCgor0WFevERlj0YgZe4udPc9zMM4oGZOHFh9AbJOCK1Ije6d2EXVRQeaFDOJubqXaW0mDp0ZUdcVXi4Tg/z4c/QbSL2nRtKcKDbjmacXozMDeamP/QD4LCwtMShMMzw1gv2wjsS6Bsgc7xPlPPKWYXSkBGDYWXwMmdUEBRIJz1ddMu9yMsS+RG95vSGlMEit94m9lwuYbpT8Gzwsz2FYfQcmMGePkdjq912iW64MOVAh9yF3K7LwHq9PKvhk7H89YSW8w0Om/hnu+lz0PczFeNlA1Xfzq5QkZl/W0+xqEEzwmVfG+6h10Bi3bdfEoDKH8ZPXYmIA07xUFkk/2sacvlztyJ9f9X9Ar3eVLbyvai6lBkxCmUDCQyRVvCxVPCnCM6BYfSDAiqM7Fc9RTToOnmhXhb/KB4X00VdtZqfk1PzU/GDojzmyiyXdK+ABbgw31hWTOeY6z85kRw8x2kTdc9jYQcS6MzR3riHVFcdxXRlpf7OIDyD2Zy+GZErJGE0U4eztlOaEV61hr+oBVmrf5qfnbasJIm1BgH1YzK3kplIzYn6gxNOsolI0YHii5LrdRIBkJda1HRJ7eUHIGNDxaGFl8ADMLjyj63sTO/mBr6yve177DyqS3eCN0Oe9pVvxXGmCYiiPTpcITeNa+GRtlQ/kk1Megn44ht19H91xHAHAqb327nJQBFbWzxznmKRcR438ucLCo2ekxYvWoaXhaJ1bkva53yK4145YG+HjQjqYrhpOeCmESyV0Rwjeo7ilI7FaIVpnyYSiq4fDgPSJ9zn6YSlqtikfSGFGHN+NwGfjUWymumbtTRNTR9SuxdxuELyiczRDzj3krhSPdULWWNRnvCT/00gEE/1T7OJbtfwnn/PRJRNX3zWtY2yzMyjNknTeyz72DW/6vWd3+Hkc8VWgbU4WPiOvcjOF4CiFHP+DDPatIP5HGGtNqdrgzyGjS81R+QpgplKQj0XQG5oef28oV2RmYnyaSqdIHVlE3FDxLF6F395kS1ls/JGT/GrRNqQLuSwegcaZSMGIUL7Kx6SNCLm3gnq+LHZKBfRO5jM8PiZfXt2tYdWOlKIxCT29AUb+VyMBQnNmMyqUQqx92KoSPLOuprDuIZTKZ5PEoATTqQhgfFa0XYfCy9zza5lRMLUZszTnoz2pxPDBQefIgIZaPSL+kF5mpfUaDeiLm5QMom3Dw2Q+7eDo/i31Wzac/lOJocbB/No+Do0V4pRmsj1Ip8ZsIrRMtcsJPhwiBoxtCUT0MReOJFoVT5piSbF8qCls4m459yLbbm1D3JbHy9pusav0NIbYNNEunSGxMEN2irM+NZE4mElUTgq3GROa0EtOTJIQZ3n0b2+D/ICzW/r2C8gGRw1Mynv2vUPfjfmruEbl9OvIHM0W1eFE+i84TTfL9SCIDKq19vA3lnQihrmXj+aJrvKM+jy2V61HsD/mxAoy5t4XMaj364ymEVq8npGINH5jfZeOxNWwIqHxNYH6mW0VKb7S4/2df/D9bKta/fACHRoqxNdkEgP8QXuwDQxRE6XeVYvWD3wlSxxSo7oRR7SkXDdOw2hDhwAwXdFhdapHsZLgTOSkd5bWm1/j5n36OqnubmK9siEM7GUuyK1oci/mnN4lnJThjSOmKxdFsI6T2Q2Euy171LbIhTAgfcIoilT4tHSHmeAQR9VuFUOrxSKJrtlBRVyaupbQkkv/AyA3pujCbmEZFsM8gntEr3+XIuU+IyozC2mrmxvy3rz6AkKO/I++4GdWJSNLOxPJZ9RFR5YkGi+xENxVN0QML+2p2EXl0I6b7SSKcJl5IQDsdzw6fnrGFIYzjCcIciqrz6Jr/jpvSN8Fy/NUHYO7WCJtd17saU18SJdUFRBzfgPlJkugFnJKOkuPS0OG9TuSRjYSUrWVPTQlrzKtRnNhA6IH1VJ05yMZAKN1YsVZohmNCg8GTENSqVx/Altu/FwA2XQph273NQq1//+lq1u17H6fvlHBusefFt0VsPTp0dRoRYYyTcaJeUN0JF98RExpjUN6NEB2prEklCbe2cmwpAPjll78QAPJHLWxoWidyg8SuSMrO7KLs5G76JBc5ly3onGrS7kYJh2rxpKC8E0Z8QxTGVl0QlACnu6BG2RxP/M2tXJMuBfsRS6CtPhZNm+wU9noyMAKrJjrK33ivEGLdyOHnxRQ8y0DfrAmGUfElKfNuUgBUGFkziZgmVQzIvaIBUx+A853vS5J6FOI40Rn30gH8ExZbYyyH/1DEAAAAAElFTkSuQmCC",dolphin:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAP1BMVEX///+wwc2In7V8gp1ZV3NXVHBIRWP////D0uO/0Nu9y92wxNmwwc2lutCmuc2dssmSo7qKmrGAhqJrcY4ICR+8V/49AAAAB3RSTlMAAAAAAAAAVWTqWAAAAc1JREFUeNrt1GGPokAMxvFRz9sd2+kz5fb7f9ZrmYECnuDmkn3FL0oaSf8RJaT7iB6Pz8/Hg3J3u91+mzRCITtVIJwNS3JcUzMHSlkErtfr3fQAPQxB8uhVYPAA5xHf3fQNSguU6eSLwJ9hHXBpROTXR5S7F4GcLTBd5ioQP9BuwJF4gWU/wAt2tumBpnQRINoEhGUORIHeDggE0gJlWgLKPHUvLkEEqLUCIhZAVQXsaCoAP2q38yMG1Y8vdcOg7utD9VsBFgNf9zfEcO7eCuTMvdG3bb0X+K3AL3sDzGmlFNpVZskB22xxR9sRENkGUAqA4rDWPoqPk+OngIaKWdVnaVAVo2pDBKotGl+KQhurUa1zQAQjMRHICywCE3/vSrq2h0+/8KnDvC5s95m5D6ntR4BZLpfL+BgRv7WEKKY0Y03d3UWALZ5GlLMAkjPFdBQgskCOQKbl4ThQiEoEQHlEiGkRwItA3OsKalsa07cCg+/51hBTBGQvIIJxTWHUJ0Bk/V8AEXsKpD3M8Ux1ywCI8F5AwJD/CAhUtBUkFYeNMvlXQABVf3kCHgBq1YVagQgcid2N6tIxEWGXZ+ykScdie4En6XQ6nU6n00/7C3s4RNq7Xn9vAAAAAElFTkSuQmCC",ender_dragon:"data:image/png;base64,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",enderman:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAABGdBTUEAALGPC/xhBQAAAY5JREFUaN7lWNESgzAI8yv8/z/tXjZPHSShYitb73rXedo1AQJ0WchY17WhudQZ7TS18Qb5AXtY/yUBO8tXIaCRqRNwXlcgwDJgmAALfBUP8AjYEdHnAZUIAGdvPy+CnobJIVw9DVIPEABawuEyyvYx1sMIMP8fAbUO7ukBImZmCCEP2AhglnRip8vio7MIxYEsaVkdeYNjYfbN/BBA1twP9AxpB0qlMwj48gBP5Ji1rXc8nfBImk6A5+KqShNwdTwgKy0xYRzdS4yoY651W8EDRwGVJEDVITGtjiEAaEBq3o4SwGqRVAKsdVYIsAzDCACV6VwCFMBCpqLvgudzQ6CnjL5afmeX4pdE0LIQuYCBzZbQfT4rC6COUQGn9B3MQ28pSIxDSDdNrKdQSZJ7lDurMeZm6iEjKVENh8cQgBowBFK5gEHhsO3xFA/oKXp6vg8RoHaD2QRkiaDnAYcZAcB+E6GTRVAhQCVJyVImKOUiBLW3KL4jzU2POHp64RIQ/ADO6D6Ry1gl9tlN1Xm+AK8s2jHadDijAAAAAElFTkSuQmCC",endermite:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAADR0lEQVRo3u2Y61ITQRCF5wGsEhESCrkloiEhITctQG4xiQQRuRuIKPrH93+Etr8OHQOloPyQbJKu6prNzu5mz+nuMz0bwpWtL+7LVqkl69lzWU5tS3IiJ9NjL+TZ0+cyF89I6LJ66di8+qoZ5mLpkIhnuqfD6KO4+e/stvse1OqFc9EXk1rpSCAD4G1Pysx46hoBq4Vv5mvZZpifzBuYvyXgtvseDHi9qF44k7N4yXwzeyicf1dsaTY0ZDW9K5WlExvVw1buOOg1YS2zF/TeUM03yaDwdun0Gvju47vuezDTP5dq/pMBfZP+YOPyy4bsvv5u55mnJJhTANKzQO5rRBaQ5fmqFBKbUkxWZGXhvUW/VmgaaH5TFmTGXFfd3kzz21K/501T3qKoGWCCSCbUVBNUtKwcOKeiJRNPZiU+MmOORiS6BDKSBADcvHjeIcEBVwqnspE9MgIgBLCTowkjITYyLVNj8zIbW2D+j7Xf80bd4lrvDv6fMyCSte/WKH0xEfMRcXPA1Hwlf3JnBiCKCOLG4kHnOZExIs8L+0gpAN6WR40+vQHgOefNEeBjj6esR/AMWEvvGQn+nChlgC53TfGRqOOoP/2BAlMCdkTB6crwWbZLF7Y6+HWsIlzLvGZA5zlRygB7YR8BbYAU+Eb2wIBxjHMe8FzD0klvwDzHdo0e+3MiQwAR5YV99PpfvVr7iaodZz7K/soP6w+cAL8G4LaXUIL8OZEigKj62O78diy9yQCAA5RmiPTmOgjgHPNEnBaZ+5wAnhMlAtidtZc7dYRONynmCjIoAUEjHzTyJpAInp3XJRPRY2QViKwRsc3cUafOKQGEDWdOI29LG0RBAOA18qb27AsgJNIEmKJfEcCIOwnUsjY7oa+NKLt6m+Jn2moPAZBDc0Oa9zMBmtotaZS/At7qmpRWAsgOAx+pxuY+GWDKXbwwEm7u7yHCxY7a7zv7BbxljupbVuimiBECEDxteoyIvrOd8qUBZROk67+pPEABTjZo+9sBjx70tfnX3tRUOSQnsmHgbCV/aV9t+Vw9M54aPAL4Xk8GaDfYG5+s/1MjZILHqE2Q7ev53Ra/Zuj7PgDxAyhC6B80BqoPGNrQhja0Qbaf/P4PM3XaxMkAAAAASUVORK5CYII=",fox:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAgBAMAAACm+uYvAAAAJ1BMVEWAgIAAAAD59PTn2dPVtp/nj0G0j4PifCHMaSCwUSKOPyRWPzQGBA4kh8LGAAAAAnRSTlMAAHaTzTgAAAGUSURBVHjahdAxb9NAFAfw8wRIDLkFEsSCG4kMHVAzwAiV5W9gXUdA1omugPWOEdpwzxthaP2qLhnrD9ClHaKuvQ/Vv2OnrZuhf1myrJ/+vvdO6YcZ8p/4jdZqoKLB87AchKCQqA9X2+F1HJa3sNuCUv/3ZfRV/q3hMP4E0A8DSABN46knV1prUYm4FJGK/d4KyJgyTfP74FZQZOZvkiSfG2AA86xYwyHg4x0U9AgUtAlDZiYibvN7Mknyb5PJeKxGVQelIPM4RjVG1Ahl7CF41XU9j8e3IG77bfb9yssJYKHXAWCf5kctoIwnArySra3pdLqzI3UD7RwK0f0cTD/cAS7rwL5TK0D5HjzJfmK7TYhedoBPDCsiHfgf4b0LQWvnOE9S9n5WuAaSXazVgO/AFRn1piIuARUTGQNQEtTg2ekyAghAmAz1wXXgjSGAVFwPWU4WOPyXTeyx95R1cAaQhSZyNrWeiIoWShkB5gDObcpEM9qEfAXG9MC50ua2whlmD3ARzu2Ly+vzL5pZjuy+MPvC3QC9wfXEFSoo+QAAAABJRU5ErkJggg==",frog:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEUAAAD9trb/ioq+rWqxnl+mkE9/oFjlXl5zlktjkC6NdEVWgCLMPj5NgDBGaypJax46Whk3VBkxRhRGKiktJi0uHRCwcSzMAAAAAXRSTlMAQObYZgAAAadJREFUeNrFleFShDAMhBEoZ1x1Qz3f/1VtQm9qgVoZf7h0pqWXr2k2M8eQJMBwSSJSvStpow0sUmdgCHMIbEQTIgCo5CMkzNM0zaEBgPf7x0SNUfUBhHmeQwOoiq4zTPOUhk32BF+VomvAlDAPT1jY+LRxXrQlqA638G3lHkKQxFL0i501vxzus2WIyunjfidUYwb8uClU98mr7CyRFGwrh4ecUwABj61Iwlt15zcwSeHjAGgS379fILxTk+I2mt0gCRmyXpNs5qeJZ4BQKQW43ToABITgEgAU4DaOt58Bwp/fAxChlAzj0zj2gOcKGK8Brh6wyBmw6bv9SCMpAybfy408ZPB4UlUpAp/pBAEbBTiqZO7V4Nm1NESU/BFYdsDSBaQCpAvIDpAWUOwnSBDwSSTt2foUICT7SqVPjx3qaeOUsHBTjOoiAdrr0BCEGK5Ilg7wtwwgrEj3ZKXscnM9AFRCBO5JZE0IGc/+xbIpCV53v8eVjQ9K3qdgV1zro8hrtuIKkC3Cr53dPFIqcxG9EjaPTIPb1DGpVmlEaUNHa924dfgHfQFwmyc0LyT5NwAAAABJRU5ErkJggg==",ghast:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAIVBMVEUAAAD////5+fnw8PDl5OTk4uLd2trYzMydmZlzc3NLSkr5ldknAAAAAXRSTlMAQObYZgAAAYdJREFUeNp9ksGN2zAQRdmDO5iBfN95JlWAgeRuAkLOZuRNzgrcQYLdBoJVOoirjCmRYDYy8i//wIc/n+Q4J7gs6YgdJxFRBBNXVQENRE8yZZG187sKkEIGLi/z/HL5D/Blvt3mH+8Ay044ZgBeb3e90QDVCkz94QFgpbGugOmvDPy2vxNYgMPnDFCAloCoLgDXqf9wfJBgKwAfU/+M8S9AGQH9MXzDSskGYJQRgcMEurkmDSCxfSiABtCeegsssuJbQETFTKS6q6r/v/FOl/1wXSrRtQOESDh1F6aeZG12mKBvC6N9Bq6nBtA8xApM5vCJRxpXAAdgEfg6f/80/wS8wggrMCwjbCl33T09Zw+6dqolB5/Yw45p9xRAORMiaB2hQLTRlLSWHNTXBHICwD6Jv0Qg3E3CGTDWLffOJ7B9NFkTRP1ZYbTRkyCaUxiS6TCyaBhNwwgoOQGcMsp+RBRe38CE4axrhxhKAlYqALmEEqIpRA9D+SwTikQpt1n93R5IcTOKi/wBKsTOnkkgxrkAAAAASUVORK5CYII=",goat:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAMFBMVEUAAAD////6+vrw7+zq597b1cLArJCenp6ciHaDg4OFcmF0c3NXV1dNTU1APj40MzImjJ+xAAAAAXRSTlMAQObYZgAAA5JJREFUeNqNk71u7EQUx0eb9YqKZ4jOeFPchjAze4s0rObDQrcy9ngU3QKixDNaueAFaChIFFHQR4IGci2078ADoER5g0g8ANqKHs7YeONsyIqf5HP88fP5j3dt8r+ZAAOokPxVQaDgvc/J9Q8bgsQ24oCnlFehfVWYUMrAuT0CMAZVE8JpCFer8O1HfRtFCKVUFdbeVRVuZ7O+jSfQOGEdqkrHKwm2XQHAhRYFaYzOk76Nn0Kg0GCEBW2O8lnfxk8hMCK0rjJSSrNM+razBtc0vtAppOnhpG9PQlJFmjbYAiTY5bRvO4IL+BS1qWqXJ33bFVzjv7z//f5h88fHfXsREXxOxuwKIbhd4YDSyiDaDpQUAXb4TNAaBdxiQQGQ4+H5U7CZ1kbXeL0rRQqAznZCFDDC1tZWOpbzFCPE0wQKtdHZ5/H277pSUEjnczYIBxSsMVGwUbBRoGNhmrLaZeZdVdf2g4mlECk9eiuXg7Dg/tQZ8+Gytu+rWC4WgtIL9SRIu3KZD5d1cFkshRGpkmqISLLitlmFq6v2arXKYvk5M9qWehBmzrbfN6v21za2WG5xSbW3+fN3nkrgez9Myrgkw9DQ/c3h681WONCCA+wRJlQoyvcJAJwPE3zmry79zIbTlcuHCEbVdpE2tb62iTSZM8ttBJdCkZ4UZG3lRKZHRh+OItgQYebSGj0t7Fzb5RAhmIRBcM464xPvTf20BsqVGtbw5/2P95vN8NoPEamiQP4TCsAAIMUe97oXmo/d7rQCzijITq2QYiSkwAAFilWim9LT6+vrchwRBd7BUKAvBQZM/itIBhyi8CyCoUGV4lwA7okXE1IZ71NKCRFn6fnuBCrRUFpbISSTUnUTKoA363Uv8KKUkluFApOqKBcVMhbUpCykKpVdCCnL4sAQJKF8K9hJXZbleSEW87K059OcRIQ+GYR8mkxre14sjua2TqakF7R+txVwYELK6fz4GDseJwhRNApbEjIlx8tlMhwlREIU9sDYyX4B2Jsd4eGGjPnk79eF7v1N/+oaQnpuvrm5ITPnvD9be8Uov+DATXMLKem5++nujiSZ83W+/oqDMJVm9LP3t1yMJySLrC5z/wUHjjD6aeX5gvQ8/vb4SMjbk18u4mdhBLLQzjmddZ9dTvBTuCekyZOWtHi+MsY4pLWOEGqEJJuHzYaQszyZkbZFpaNt16EhhLuFIhuEoDF78ZP9A0Obf2KBegjhAAAAAElFTkSuQmCC",guardian:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAhFBMVEX///+rjEZQjnQtWUcAAADX1c/Y1cvX1czX1MzX08vW083X08rW08vX0snW0snV0crAuq7Auq3Auaq+ua3dkET/gi+DpZy5k2Syk0/wdyjecipqlYPsZCqFhmBmiYDLZSNdf3XeSSh4dVCmXCxOeWbUQSDKPBxBcVpkW1BgVko5ZVJ5CxKoxgN0AAAABXRSTlMAAAAAAMJrBrEAAAOASURBVHjapZaJcttIDAW5lvfIHtnLYiLDee4kzwsL+///F45I66AkW467akSoIHRhhjOkuq5bLper4fL/wHAhiscBItiMIYSgm+j76GOga1xdXXWD4PNy2epHQ9q1HrAz0+mneCswfeB+K/i8Wi6HsZoEA4vFojtP4E1vO8GmvvWw5QUBEd4TrFabBj53F9LbEfZOcLt8WN2ubi8WTEu7J1g9DPUPt5cLPBM83N3e3g2C6+tu4PqYmaCPxk5w99/9XRsvCaLR9+G0Y8ID3f3916/DuO8azwmMgTA4WuQWp7uvEy8KYFObOQpsR4K7S4kJ7Izod1MYaSvwetoivk2wWAyCGR4PUNmZbawHnOWLBTQeqxgZj3PBWQEHbhPRD2TfrlNuOqCmPQs2I6M/I0hCAleAgtwKNrmeMhIux1lBLwklknpy1l0rbfXinMD0SEDTxDwXLlVt2tubwrrbY02fNZFxlEMoKpB2gsfDHz2G/fev735+/6/NcU6yC0lxVtDbv7z78aff39s6EiRylRFxdgoB//z25x/v/kKa5ygD0T778/tAYMCS5rmKsoTKz9wFYRc4kee3OBU0byJtBZr9SFkViAqsnG8yQGpDz0whWqmi0DynPU4eJmy6xUDLffz06UueP+xnBMkueXPz4UvW9ws+thZEveaBkmV2325ubj59gXqFgPV6r4OhhQ9DD4cCIZ0XPK7Xj/MO8lDgFwWzNcjZDBC6cArddBcOkcyld6Htgx+6GXq+g2z6Z8HivEDPCSyxGchInN3K50A22Iim8ZNAESnFgKTjg5URaEyiAZA4mEK4CtPcCs97rngqEukcW5gJsgzGZTEThBKaYaynEjutQ0FRxs4T5z8kmbGF5nJVumYCtdo28NFDVEjpafZ22lQWsw5Mtmo4fg8IcE6fzjKm8EwALrBPvQckV1S5QrgYMDYHAoHBzjqeQogKRVRIY49ZTjQT2K288NEiQiE1C5AeV6o83wdNXRiYC4KUhFNIZELl0SLKgKn2oflG0saaaMCYsdOZYCQlceo9gJTQrttvB4JdOAVItCcTgl0sYIqRnuKUOBJk2i1pp/fi9BS3a/va4nK6uxqReqHFq7naCix5X3B9kiNB9yToUzJvEVi8SSBDvlXwpjVAAl19h6BX3wNm2ng4/SqB3MCVU5T1OgGokfb0/LVpczpVfuqPyjdt8tQvCjuwWwAAAABJRU5ErkJggg==",horse:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAh1BMVEUAAAD///+lpaWGhoareS2nbh92dnZxcXGPaR1jY2OKVS6AXCJyVBp2SShRUVFvQh9hOh1FPC9ZMxc2NDdOLBM2MCZTJQ5OIgsrKi1JHwkqJR0/Gwg6GAUhHiEfHBcuEwQpDwMjEQcmDQEiDgMbDQUcCAAZBgAPBwMNBgMQAgAIAAABAQEAAAAaegGbAAAAAXRSTlMAQObYZgAABHpJREFUeNqllouaojgQhTOzuurYitKsNCS7pR1lF2fe//n21CUBvMznN3MISYVQP5VKEN0LKitT6Z6rKovNZlMUm6KsnCtgVlVRpbFduYMw8qIKq0zlDkAgd+WrgNKqDNiIilcBmwXXi6rAPARQKOD1CCqroNVWAd++IYJfBVQ7+IOwq55M+PmF1WKLUlRlWRRlWRUPAbufXNiutihlIRE8m8KiwjLxQqHCWVaLtJgFlr6sxqtfoYstURQvRQBgwcAxgB/GusvY8wvVo8HX9Tog+IASRTfbetp9Dqjr3wL4+nCofYxEU8BisX3anQLgf/CRoOjqEELycCuzcvex6voARKQQKGImaPJWUmPoPpb41xQgIplJ3jvuJQXOQTAAKcCErTdspPtljMT5R+w1/CPbZB03SPfv47cRLl9+IHYR1T++AKEdDO7/Ev2TWqci6G8U7XiJAM6ASASeuKOA5Xw2my/b1I4AHyjaCd5z1BFCg04g7WCwnWoCiNEAsnJZ3LPufgh9ZCbA+8fH+yQRCB1Rj7Wftfv5DKHP25Hpa68FHnzYLmDdAdoW5etXhD4yzZGLVAZgZFAAP2e5tAiW6z//WC/bkalugpDWpnA6Se7uALP523qmUzDT3P10CieIRi/yev325vZwBA2lHZleUiA1ceN42U7fz+fvJ1kPKAN0/RFPOzLFjbimyC0DTud/z+f/zifyQnCm9qE83EicI/lIEQA6nUUAgKAAn0VpfxiY/YiiFhwOPichIAuyMl4BbB/QC1GVART1iAQBENAogOS9NACccaCPYQtBAeFGznSAyBLQNPIDpYBAcQLYrlar7Ttqad+3E0CMY4AiAKABcDwenQn29YrmBgAnTgNcFZEB4RlA36JHABQFxEcR9N3n8fjZ9RNAfpsBgIQShEB3EbA/E6QT4x0gzyFQAlxVvZYLnAG5TACQ8Q2AIhEIub/KgdKhvly6z8/ucuFbWYEoeC/mQWQNACFCaDq4dz28u65Hm3IgN3ueqnxf1c8A0wjgBoB4d5DlIEWARFoEYwQ6CMAAcNPH94zIOZBlgz8RI2ALoc4QW0YMX3sGcLniHHIAwS2IP9zNURGyjBkAP10CnNMcjJJoADFqi0AUCF62kHzc5MBLEjUJFoFUDEhz0EejdGxMc+DtwyxmbRGg4CAK9tGSh+dqkgOLIJg3BAMCwFNMe/k60ZCDNIc8AwPAm68TO0O3gCEH+isfIEFoIoM0zKXhbcTbi9OanIMUAE2SCJjNLAPIwdFOFOSg7zkHtvJp8sZLyyjmeEwb7/PX0Y23b9PoLmzYsMVoGrXQGgMyf4/Dwc67rpGmwc2ocBm12kIffic9hEpax3Zjg3Kr5L6BakHZ7jSKAOEScGraXEAl4UkcHDp8feOZYIZctBswPV0ye/0AgDSGPMXGs4TTsKFJys8PqvRXLAihEQQqGPII8UTRAGVA86H+pAcMRyR7WEOGPGTQZECNDcsgsYJVLnLrs9hBx1hqycUkHrUvqxgONt9iUv+p7ocjlD66/wNdcSNfhkmkngAAAABJRU5ErkJggg==",llama:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABACAMAAADlCI9NAAAAVFBMVEUAAAD868b14rjx3K/v2anr057jypXMqX7EonmlpaW6mnOvkW2liWaGhoareS2nbh92dnaiayOPaR2AXCJyVBpjUT1FPC9BOy82MCYzKSMqJR0fHBcP+iOkAAAAAXRSTlMAQObYZgAAA3lJREFUeNrtV0t22zAMJDAg+0ulxm7URr3/PYsPmUiMXja0vPJYJMbyAiOAGjynN7ACCmVkPO0AButlC1ueRnEkgBydAHBA45afIICJ8bEG/htvdhHRcI4APIGU7wVAauUB4wJiUX6OgAIymjaACLNLEBjPxJRZTjkDh4Ag5EHEuCUvym8pgOgTAZFWdw3Gc4EU3LQCpPhEQJbs2TXGpxTbbyygKNIhcom8UpRVbiwNQxS0AytEuvaqMs+YlWz4jQQwMdEL8wuRUgaaAIFyhkjN27ILwgvcjIhsx5AAZiL+8kWDUiiqAHddAL0AAM2TiWvVBgXw9x9PTz++814Ac61H2SFMUAFiplq2dAaYTctRC/RCawCFbQ1B4oFaopwC4OZ9uwJ49+HpowWg0QqAHCgVKdCsf18CEYn7cWbIdx61QQf3AhQQRc67FrgEA9roHK0AVXQCwIAAbj8NSt2R2xvC8R6eI6COYOwFZEEMZmlngGm0BYi3Gf0hjFZDcu58KH7xJhA5GRmCBLCjFpRqTGK3cHgEAGZhrkYA8Fjx+etXIl1MtaDOkgCsS7JsBcRcZF+ul2ngDEROejUBrxTgGuMQKnojMgAMRdWMsRYwRSt1cSy/m9gSSVbsBCjEhHH1oiEfgCVn9h3vb3bMl3oCvABdE9pAYpACAxUAwTP7jhbIQvJBAM3fIfttqS4wZkQIv4+AoI0nWP2lHEDCDaoCDAgQ1ONskQXuL4ibSRD171sQXYCA6ykEBgRYqpAB1tWiHD/U8tfxr8U0imimeNoMiImp3+VtIG3cebnM0zRf1hbTKCQjQ0R0N6Iri4SoQwFrhzSKLJLjgywwgqzL4wcBy3vplf65SRcsP8xbxFjRLS7lBwKmdZknLf28bmgaQv2H4SEr8Ri8pN6ZlnXV69u31eNyky54Ul1xOQ1eckm9M9ljX66/fl4vq9Hn5+d5uAKezD7FVv1W99Q7k2Wd5t/XaV6DXqZpVEDpbCZvQuqdabHE02xZGx0X8AlS70xLvP/zrPGdpvPQO9N6hFMF9M50bxw4033RO9PRMDoVvTMdDaNT0TvT0TA6Fb0zbSbQcpcu9M7kE8hH0LqhZwrosJlAm7mU7od47FmH0Bpz6eev6+XuAqbpMmt0ev2t9J4CZheg17qh6X6ICTSHDzR6TwHrIdIDDzzwwAMPjOA/NfpDB1xAY2EAAAAASUVORK5CYII=",minecart:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAMAAACVQ462AAAAM1BMVEUAAADBxMW2ubqvsrOprq+epKaUl5iMkJKFiYt1g4ludXlsdHhham5SVVZNUVI/QkMaGx04QmSDAAAAAXRSTlMAQObYZgAAATFJREFUeNrtk9FuwyAMRVMa7jWzwf3/rx3QLmsiOlpV2lOPk+BYypFRzLIs53A6hXA617sSzsurEABTSkRPsLxGAIEYI0ACiCAC4tqp5fbARGApJavRsLoggLHGyrWvmAoOIPSWtiamgmw7MgIhcQuAM0G+U+TcBERcY+wNgJwJPO9wBAq3Blo+E+wM7ghSIRqkVGaCPV3w9RsTQUVAMRMC+MlkUHusISVfLlkoW8ZRbRmTRFXNTG9YZ1wdCoTqXsy8dNysuJtQ7Z6JoBTV0rlmrk3gB0zHW2gCU7XS6ZlrugrKxp+Ccuyg3ATljscC0eLtM/d+aX+tVfOy46GAQwGfFsiwA5HnBRwK+O4W/k/w/m+U4SDJ84MkMhxlmY7y8TCVGy8fpsR+WnXDGuPq8mHIN8fuL8tkDiT4AAAAAElFTkSuQmCC",parrot:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAP1BMVEUAAAD/////7nn/6j3/5TPGxsa7u7vZra23t7ewsLCoqKienp6ZmZmWlpaRkZGQkJD3cwmGhoYlJSUPDw8AAAD7udxiAAAAAXRSTlMAQObYZgAAANJJREFUeNrN0tEKwjAMBdDGxpnbZqtx/v+32jYMN9QKPnkhYdBDk0EDHSIQ0CGBDkEV/pFgahtgBhxEZu7nSGj1Ajg6SAmpVQe4M98hgHCMVUAgqklbObgyXwGhXczUWlXg10Z+bj/4i3X19gra1KJrDfVGakcARdFyqyEHS353w35J2oGiBRO8++miqrU2MJdZIN6pJy+Lz3Cgs04yeaees6qeByMypZQo548jLDdl9mnE8D18B+EyBiG4+AGMduBwCi2/g+BiAAJ/BTwEW/4XPABsMA1LwNN2rAAAAABJRU5ErkJggg==",piglin:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAWlBMVEUAAAD/gID/////7aj/5bX12iryuobMzIPCwnTooHTVlXreihzJgmWHh1e6ZkWtVTKiWTplXEOhPjiESzOXQyKNNQ1rOSR6JiF2Kw08OS5TKxpgIwo6GgwhHhyEOBusAAAAAnRSTlMABHH+CSEAAAKgSURBVHja7ZZxU9swDMXDWAMSRspwYiDQ7/81pyd5Vzzf3Oz4t78GRU2kF9m5Hm8y7h8sMM34zMQrcKZj3BvTRHMVoHVVJwRm41n1eSDwYFSB2QW0AoG4psY0JgRAK5BeiV7TWCD2wLt7AXkhehE1Du1BL6CPKT0quL4HgMgFxIBAy6xt3hICsYniHBRIzET+6Ij1jxg3/NUyXxEwiK0wiITZBJC3And3d10uzCzKjOkNOzGrX6wKJoUVpiTJQ5MbVseyqpX9SEQWmHUV+4obhI8LQCd5aHJDBALCRLIaQuRfWSRhBK51M7bKQ5MbqwpLjAyB5Kmw6AoFToZAgNCE0OQQMIXEGHkFtU3UUsUU9XX6DnlocgNNql4HvEuRAzWO/Kx342xMFXbibWwb81TJOS+oOyQg9reK8mafqbLkJR8UEFEW3nRjzDBV8nJwAgGs1qoY5DKB0QrEukrJZc9BcXz7S6AiolspC8AMIJeLQME9xC9JJppL3FmKen/J1moPsOhFzfi4gXNZvMuKdiL0xmPLVjBaHTBiK1DQH8lealfyB1mIsbEqIABcBETQKjiDYsRi84I0WwYp6yeilFgSp/iFBgJVSMchBeTsR82RVgFiCIAJgMRkihBn/w0XI9ZS+/GxtK1LXyaQVnkHn3acLDhlh6TIkQms6s05/Tw9vQUfJzs+3v45Aa4mXCTCCnh3nj73T0wQOY6oQyT080WAqcKO70H2F9tsQq3zpzdLOJ/P7+/nX+84I8SqvT//2QKEv+umGzdu3ABH/cLAFxwVGPuC4xMs353AGAmM/ELvC8b0fqHzBUN6v9D7gjG9X+h8wZjeL3S+YEzvFzpfMKb3C91/5TG9XxD5zgTy3xP0fqHzBWN6v9D5gjG9X7jmC34DNs5yRa6KJBYAAAAASUVORK5CYII=",pillager:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAflBMVEWnra0CAgIAAAD////Hzs6Trq2VoKCVnJyVm5uTmZmQlpaOk5OLkZGKkJCIjo6EiYlmh4VzeXlwdXVobm5nbm5SWFhQVlYyZjx2QypfNiEmR0daLzg5Ojk5OTlPKxlLJi0fNjYqKikeKio+Hg8lJSU2GB4yFwkeHRwjEBQUFBN24XvqAAAAA3RSTlMAAAD6dsTeAAACP0lEQVR42u2VYZOaMBCG1TOCDUYQemeqRDEq8v//YN9laQYckaAzbT/ckyPEmXsfdhlnnUwbwlBKGS7CBjmZfn6m6WQ6G2DiBHUegrTmFUHIpGeQSorT9fcEixANvCt4rwVm4V5ig7/AvQRJ+AuQQPOSgjjwzYHPw4Im267AnaW3wIXbdxINC9zDZUPbADwEHMnztZTrPOc467wEa+SJc54vl3l+bgqADPgJJHf78SXl1wd/oDgb1sMCeg4yifqxXC5Vwk93DAsSMoBE/QQqkZxPEvrDNSxIWJGyIOW4Y1gwG+BfCS4Nt4YXBJso2ngLTsBe7bUlQB6GMQLkrYfAvwJq4Z0KYEDeR3C6QzOGBEb/wQCtRwjMZbVabQ7G5Qk/weFCa3fYIb874Nxa/YLj0QkuN1r49/0eEZxbq1dw/AWDp8C/haLwbMGa7XarjTa2UwGWXwXNW7a6Zqu7EQ8BPfoKDDSEfcJDAYWtIQlTMBVvXR4KIDaoHApotLmWTFWUZVGVXXoEhquHgS4nAF6C2Qi+Bd8CYi60ibIoe1mAvAmy4C2BzWB4XSCszdDDaAGHxVzE2jCxGC2IYyHimAcOBPFoAWY34MFJuxMU+5pyPhei5PPDCcRD9niiHaP34AQlJg+oRFGIqgA9A6Q9XGlrC0oSxKCi/FiBfcJdC27R5gQ49662gN8VV0ibE7jCUOWzH5KiNrgOuwJXEZ7aJ7jd4QT3pfa1oJTKAqWCDPcsU9noL5IKAhUFUaRqAvX/TKTfnHu1gRak8lQAAAAASUVORK5CYII=",rabbit:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAMFBMVEUAAAD02ezy2Ovx1unxzue0pZSkjXOUgWKUfWKLdVp7aUpqWUFjVENhU0NZTDtSSDkNYhzDAAAAAXRSTlMAQObYZgAAAYBJREFUeNp10L1uE0EUxfERBdhQ0PAivAFPgUJHFT5ewC7TBJ8LBW4i3TM0VEgz09B6ptiOV+ARkjJt5GJyNbubtZLdv7zro52fJWtdq5aqENe3prV37vl2v959dK2SCsERQBrYwtoNwOdAP4AVrAsDZ7iUAWSG6B/AZtsAvsgl6VqBjGkEL84/NcAPvBoBlSnFfmL37z/Exxi/xj8x9kBVUsptBsX1DRjtCIAbUkjqSptZYflSyikA0HVdm8dM0pdaK87x7WwC9qTNZ+/ckH7G1Xv7RVCIj+3emXrzdgT0geJczaH9JcKnarlHGSDhoynOg2PJQYUqPpVuDtRjUVGIip3PAedrf7kVLtz0NYXarkUAEBBgGQgVBBeBMlKC+kUQfLQPEyGK3WYLi3RT2adDyr7kYAAbWD6dgpJKLnYr2UBfKqegDh0jx2JH96TVz9tpzLX+MYJf8+Bl+juNuV7FEeQFcPg9jbleH/YDuNvPA3s+jcd9L+1FqEiqVlZMZ/eZmCL8uK8JdAAAAABJRU5ErkJggg==",shulker:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAzFBMVEWOYI4AAAD////m8K3h6KjT1ZrHw426tnmzr3GsqGujdqOjdKOjcqOec56ecp6ecZ6ecJ6ebp6ebZ6Xa5eXapeXaZeXZ5eXZpeXZZePZ4+PZo+PZY+PZI+OZI6PY4+OY46OYY6OYI6MYYyMYIyMXoyJYImHYYeJX4mHYIeHX4eHXoeHXIeHW4d/XH+BWoF/W3+BWYF/Wn9/WX9/WH9/V39/Vn93V3d3VXd3VHd3Und3UHdwUHBwT3BwTnBuT25wTHBuTG5uS25uSm4AAADM1DMFAAAAAnRSTlMAAHaTzTgAAASDSURBVHja5ZN/e5s2EMdpk2Xrthg8dKfYuMVet4U7sTr86CRskuL2/b+nnUiN/Xh7nhT2574guNOdPjoJEby6ULFYlEWSbGtp5Sr5ayM6xnr7QsFlR9I4JtswuYbZunITBOc5LwMWlhGZpOUKjK1HAwpCpTWAQq2U4v1oQM3gpQBiRMzay/iLgJUlRAWAKBi2xWjA0rGK1R2AFga5ajSgYI34fAMCP44H0B0opTQqQEQevweJywCw3wJUxpWjAe8aAwBKAfR7UE/YAwC8Q+URCBOWUFKMKlaACCJqzw+SmJtv+Iy50szSSEPWlKMBya5h43ZM1nJmXTEaYIu6bauybevicV9V7Yu/c7EMk+JduCyW0bJIwmybhCtvl8l8IbGsTEKxZ6tiEa2KJJK45C3mSz9uu5xlwdKxJUeWHTnecbtyxpkdu9yxv/ZLlzXkjDXea8w+OeY6FovaYE6NQdMwsDOKXBlJBMUG6t/lTOiaLSuWnMyVoXEEvS9viQeJ7Q8/+AuQWqkIUWkQyYPalTWAIF3gZSSegyiOAaVTKiiNQp+qfBa7emsQlEIEgdyxqwqGGJWSBNCKmqrIUAN6Oorv6iBxJI4IY60cp0njfQ+RHsebd45RpMUFbWm9sKRVjH4IgvhBRE5s6YoRFdsqMo1CD9DyMk01zy0o6NNjJFuGPl8jgC+LXOUrSDdp2jdQ1EoF6dr78lTQ70mart9u0rdpisD7lSXx5ZIbNbfB1sBwOEK/5uzkz8X/kzE9+rfUFIWBwZ/5Cu6dSQeAy9f3jk6+zHYvbQBak0r+egA43gRzY0/E3FUh2VMCuTLkZohHZMsod+sBmLsy+N09nBJ+/dDeu4chIfztw/7efThN8P7h031zlv/+YR9441Kbr/L2oTscum64uxf/xkt1xCLKmTNmw58nALr80PX6fOj4MAXAncmNlxgvL2Fz4XZ5ZwTiJSR+Gg/gjg7S2AjniSdUIOP6S9afT1qCr5sOxhdiDjQNcJDLc7ibAqDOPLEcJpnfs0YDpOp+C5npMKkCX7c/SE9yC2LCUc46zpmIc8PUTQHQ8U96kuckALHpb5GhlwGXv3Mnkqll+v7570d5dhtGURRGx85ZeBvezue3Rz+chdE8nIdDfC7ZMmQAhICgENNhACoFZ/6tUggAp3iM+hgPnhMkrPTwBSONWqtzICAinIAQK1QDwBMV4NkMMwRBxCfAnfZTDBP8on3B6hmwXcoKNUAMAD8nW1Mns9DPqATy07L4Y5tE8xkoP0D9uCqzIpHFgxaiBolnQWIpZkdgHGtyvF5YFtsAO5ZG6dLbO4O0Y2QrccnLXQ7kqI8HBTfsZIQ8M0u23LKTniZrSHrJlaWxfUTiufRVEheW5R1Jy3ZlsEyrtkzL9mNayPvjp9W6eqylr07rtko/7pO0fpT4XmJttSnbZVpLbvlYie/7vh6k6+urq+vrm5s3b25uXo3SEXAl+i+Aq17/V4Df/3Ndf9W3A64uNBbw/T/0Q68RS/B6/eXq6svrZ/u7XiMBNzd+CycDjhs5BfA3y7f3PUOzujsAAAAASUVORK5CYII=",sniffer:"data:image/png;base64,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",spider:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAKlBMVEUAAACSiX+MgndgVEhPRTxHPjWoDg49NC0yKyYmIBsmHxoaFA88AgIiAADotIQjAAAAAXRSTlMAQObYZgAAAgpJREFUeNp10rFu1EAQBuB7B8RDUCIs0tB5rUuUNAivfBKvkI5b/eNLyVkzg6hQYGfyAkn6oDwAFUUqUvA4rHTGthTlb7b4P+3urHZV4uqqsuKbHdNNz3S9A5V1NUVIVW0leQfOCuQvhNzTDJhF3W6RlUvJV5R7przjBSBxu5KbHmV73OJaUc7DBDIVIKs5zuSU4nSIkYotgSUox25z0GAtfe+qk+GWN0PCARhI1fgwyJhjpOb7QDQBN0DVJ9BRiJmhB8CQAlhlAfZNaxAfb8ziwuSLQeqmrdx8BMJi0qsvBrms6hP3AuZIFxNYRJBj6L5W9d8UYg8SGcGmjSlRFuOB1/vqz7v6mLYbcscIEoYOAjNLoB+/6urtbwarGabB2q4juBnR5dnj+fnZ4wlDM2QEbQhdVHXOoLr69PBwVFfM0sNmgEE9g5Ve34U3dTh9IcZu/0Gsw2atboDL6f37u48vL+7E4c4jaD80YU2ult0v/NvP01d+707CGMG2DVVH5uNrPk0a2oog7vYM4G1qgN6FngEAgZmc8aQKMTSBgY62KbShCwIKaTODGPhztU6csA11FTgJQhNpBuGoNM2QIGDsQx0ktfF4ARKDIiKYmUAhdMZtxzIDYN+g5xLJVO4Aw8BYAG9L7waQeiaQGwlIZ5ARu9g7a9Yc0wYFK+kCeAbgDvfegdK7qyy+4z9b0kGP3NmJngAAAABJRU5ErkJggg==",tadpole:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAABtUz1jSTNTOSNJLxlEKhQWCgDfr9AwAAAAAXRSTlMAQObYZgAAADdJREFUeNpjYGAyCglgAAFGRVcHMINNzMgARBuliSUZGQEZzkZGxsHODNiAs6KwA5RlYsBAOQAAqGUGQPKmAvcAAAAASUVORK5CYII=",turtle:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABABAMAAAAg+GJMAAAAMFBMVEUAAAD////K0JHCt4ComnNHv0qUi2OCiFQ/pEI4jTopfUkwcj8gakMlZDMbWzExMTA/pVLKAAAAAXRSTlMAQObYZgAABDNJREFUeNqd1s9r40YUB/DAZr1Z3JT+By2S6XnRiJyD9ZjmtBRSUbWnQITMQlgKXeJL6aGxlpltD2VZjKY2uRW2JodAlxAxm9DD4satYnKuI7OH0qUkEfQ/6Iwk/7isrNnvSUb2h5n3pHlekqkG9AVC60vvnLuEPJsCDxMRL01pYIWQ1hRwo+T6leeBixUA234MsJV98Cxdxx5YFuDSwG3b/tzFX8nLigtoDZngpdlSAHYbOYCMmoZMBaAa+LaIQ0/i+GKpsm1ouqYhFYARCRCWAZamGcLACkD4ITn+nvzXyQCUAWvlgdWQBQGlrBNLYFn8WO7BVABGTQ/Aa56kQAUAtBoAzgHl3DI0rV4XVVQDVvyWtT4FdE0dcDbr9yaAbiJ1wN80Pkqv7riWoWsIGmrAXX9Py4BbKN2CjhQBsolmQE0dWAlaZlaDZWTUTFNDpirwDNazGnhQr2mAVWsQMjf7cgWQ2IJuYjWgGoZTwHIxbIMqwHl7AmCrpmMFYBkAHhx5YfpSt971ZL7tt8yC35Y5Vfdq97JLxoiFkNwBqJyq5Ds9B8IgIIQ89lzLQGZ5wHmqTQBGbZ+0AOmarius4CnKAR4y33E+Qyapm6R8DeietZ4DzJft2CAy5YcjbYEEKp5nU992GKEAIMu4VRLotPGP2aWF0AZlbQCsMl2rnaMJQEQC9gIZCFQAfvTgMAd8/wvKfpU9MKHkXCSs7fE2iGx8uuQ4NmX8uGVstJA5edpNE0q/W7IHtHNMZPIVpPMaewtr8tYuWHJezwD1pPN6rRiocnbm22TQ4SPO/2XsivOLOcAwFgNhNyBdxnnMTznrnPITNWCV8796vd6IixE75pyfxvEMSOf1x8XAe6PLg2ESHYwuo+RG7CJOrn+b3kznNS4G7kT9YZIk/eh3r/FtEg2T5lzT5bxetIJlgETkbxDBjWbTA1ifA3StEKiOX0H28oDIcMSvB75t0+jqMAd0ExUC798IADdFdgVwniSsG9hOl+2/zu6n8xoXrSDuAzSaMi7g81HI6B+93oCyw5IPUvXkDVgZsA2f3PAwePLcdnpkBtQWAWNAzTRfm/djzsgvsgbPaX5EyHm9CHCnwMOYd3uB/Ov600EOuHJee4VFvGx4GbDb2ImTq5eBWAHp8kkR5bzGBcDqOJqtYGcYhzSSXRjQvAbpvMaFW7h8NAW+kTVwRBfOnEkN0nldCPB5YCQAW3Th5ylQcQGKpr0EmtMapMCXogZPJFCQghXsR2kbD4blANmFeUB0IRgQ26FnndclAdkFKwdAdiH44YyQSD6JpSK70NjNa9DciTlnpBtFAe2UB8YwXcF9CTCxggErD8RvADLgkXiZRjzsMkK7jJcFVuN/5l7nm3icRCFjL4fJRdkuXPfngCi54uxP1hEzonQX4v7sRMLnMefhfpIwXrAFhXyw4P7/kgmYSeJwxJwAAAAASUVORK5CYII=",vex:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAMFBMVEUAAABthJtgeY9Ta4H////z+Pzg6fHG2eqivNWUrMOGn7eCl6t5kqp6j6RthJtgcoMKluMvAAAABHRSTlMAoKCgEjok+wAAAPlJREFUeNq1yL1Kw1AAhuE3hxYrRYm5gmivQL0Hwa1LnAtCFpdOjuKY4KBjfnYhIUPWEnIBhgxZRSjHC8hp3KWxkg5ndfD5pu8FDqNAKQkwKXIE9Fuj3zCQjECYDCaPs4tOQP9pDME4B1MAbIwTgJEwv2yixPcCPw2igGkcljlZ3YfP33WSJTB9yhG25HaJPLUBtkCdvl5fpVlVVRy3ntdQZW+eX6e77UIcNqAke0eq+JCgGvam4apoUGqtHtC067K9Q1O+l2WMJl9RvPAnl7+0L5Ao9NBB16GxZpZloTGFeWYC47l7DzrXcUF3sHTQjW9YoHMW4zn/5QeNK1xt8XQSVQAAAABJRU5ErkJggg==",villager:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAbFBMVEX///++iGy3gnKze2J6enpra2thYWFUVFRUU1NISElMODM9LSkAAAD///++iGy3gnKUj4m1e2eze2KBfXl/e3eja01vbWqQXkNjYmAAlhFUU1N1Ry93QjVcQjpISElMODM9LSkzJBEjIyMjGBTjk4HHAAAADXRSTlMAAAAAAAAAAAAAAAAA7Uh4SAAAAn9JREFUeNrtlN1ymzAQRm3cuG5C9oMFJIW0idu+/zt2/wieiTNAk0ufgdEKs0cryWJXB0RguUEO1/Xzc871Irs3AViTQdnYLgAzGfmPkFnT9V4tiAI+IyCB/19AVgA+KyCaF9FZL3iDlfUCAl0AjpYmFgWagjkJfjNCtCwgml7niyrmcJ0gho7mQkDrBJALsAhwyYY1IAP4bahgdmKFgBme8PjE/PRI3mMGG1gWxMpnE3GetmFiWQA/yJl/CpzJutggYAYYIjAyQfu8XlAv8DWCb5sFqW2Btk2llJSKctwqIAFJ8oVFQRL+ChcCEKGlKwJSQLRfENBHFYCMZYG+2F6tAOauFgRtC8K1RYSdVqhgd6eCUmIUxTtdKknySXchOYOQEhkAmNmm4YJ5FPWM0nRdbKNGZRxHH2KElx8CRmWCvu+7roxd17nADE1qhdR0RfP1mQZMbAqwnxcT9KnYS5Lc903Tq0U6jVTt+Xo5SesWCUMvIheUMvh5GnwqqpKUJPU0jUSik57jnyswABWgitMYU2MjZlw0X9ppDbpOTMSkwCCQCXw+FBe4uGGUdehGy3950ScaEC4/duwCaWHPorEdGSM/0mMRRlKYogD2bZzGZvuJIa+/SFIQYfCjqvb7w6EKDiYAGe5h4DU4/3o9ezSzF94JGK4IC84Tr+d3PHzwTbTqvQVkqjMlSEa5KjhYLUElPJxOD8r9/cmjGQJxJmMgQVN2B0UCbUxxPJ2+OyI4BnfKEcAwxF95mARL1BcAnJmcTIRqq0DzQsCZwJsEUIgGFUCIKmiTQEceZsGwRlBPQGHY3EOQB2Jalz9XAB11crFWUH+Sm+AmuAlugi8T/AM2/NtEbUTDnAAAAABJRU5ErkJggg==",warden:"data:image/png;base64,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",witch:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACACAMAAACMX59YAAAAmVBMVEUAAAD///+2qJWrn42rnYmmmoijlIOgkoCPj4+YiXeWdliWdFcltDWUc1Z6d3eAcl6PbFNra2uQXkN6XnBhYWFoWUwMixp1Ry8vaDVaTTZMTExHT0hQQy0/Pz9IPCc6OjpANSQkQCg1Lh0dPAkxKRwoKCgsKRg2F1guJxonJiYwFE0YKRoTLgEeHh4oEEIdCy8REREVByUKDAvCurIkAAAAAXRSTlMAQObYZgAAA1lJREFUeNrtloFS2kAQhiPphVJbKVq10XDG2Ba4mjvx/R+u/+5yR1U0d2SqYyefgcuO+T/2NoYxyw4PMyLPlVL5KN+gsuz8/Pg46+bw65dPtEoeginjBdFAkAvTEkwVxen1eoJRjg30FfTbgjAKQ0wlD0NQTEKQNq98ntcANhU3fQkVile1talogRJBkQsiIFG3QPnrVQHkNBhAt8BHCgKFxBURJSh8/hcjFeULECXwMzs4KYqTAwpLXgxFtwBXkWM6/gDGU0kHugUTMoDpeHx6Oh5PleQnExy0dAsmrICAmUp8S/ZeKQum/BFIFUyYWIEGP0GMYAEM+OeCgnkVQQNqCJrlcqlBDXBWqVGuKlSE1lVZVpW2wAtoeSxoWEB1XZVaKV2WqEBVleCBwNEaBFoEsm4Epaa3RgQlTvHmSGCQdxCYIKglWEOAbpdNAxclaoR8hWZwOGedgcABWkVQe0ENFY4lIIFmgVQaabw4CPzKglrX/MkNTuigAJpmQaUbrl4WIMXD07JKhHagMfiGigYmHFXVIahl9UNssANUAGdIw7FTgMslSAMAItAiCDpsCT/ZLubzppHcfD4D4tFVSV1UGwHycOwWXMwR/Hg0w3JBAuwaR83AQhORHtDjbgGYHc1mtH4DMjbN1DpUPKnseRZ+eRFjrbPWGKx88vev4gQGOQPYZJIFoQO7swNZXsSGLTzpYNEpcIA7gEHOxRY7RBFgBs4L/BycW6P0HaBar52VLxz7tAMJiUC6ySwiEBiZMucd8oR5IkAqCMS1EVi+2iwMFw5hEUTAAkuC2xsIaENUCdEC9EICRGy6wPEMsGkvWKcK1jKDrcAlbmENgoArt7/A7CFwDwRuDwFP0W+BJ5J+GyEwj+6CSRQYEZitgH6iBU4ExgtMssAaayCgR5QqK/8B2PgtWMsCePhhIB+wCX8H4PYGQdKJAG9JHYjAypNhKQ0ShshXs8DtIXCISMECrliYpbEK3AcSBS2zv6C9Y9pB8IaC/rfRkyZYRfKsoI0kspGOzrtuQdtHcEe8R0H/GfS/C23gd/uYNMH19+u9BFcbLs8+n11ePSSpgxU6WLUeea6TJsiz2xd88tsJ+m8h9osj+gvl3QnA6j7rBQ+uD9z2wMDAwMDAwH/EH571WWMJHeH4AAAAAElFTkSuQmCC",wolf:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAMAAACVQ462AAAAw1BMVEXt5+jk3t/c3Nzf2dnW0NHKxsfIwsO3t7ferIWzs7Nu1Je3q6WhoaGdnU10oIaBgYEatVh+dnBegyJlZi1iWkAodi5WVlZUVFRERERHQjs+PTBENiY5ODVDNSWAAHY/MCQzMzMtLSg1Kh8sLCo0KR4ZGRkAAAD////k2Nnd2tvV0NDTz8/Kx8jJwcLBvr7UtaTOr5bEq5ywqqefmpaalZGnj36ajIiVhnmheFuUe2iBdm2Mb1JJQjk5PD85ODUtLSgSFBY76smzAAAAJ3RSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi/HzzAAADR0lEQVR42s2UbXfbNgyF6Wli41WZqm3NtkQOZ3ZVwwCFbShO6r6k/v+/ahdwtjOp/dJvvZT5gqP7HAC2GYZhWFDBYBIilsvLy5Ty8HsPiY4yirIQBgtfX1/HLlbD/xUcQIXh51JI1ut1TumiXyz6SKKkAi4AzEQGCLH7AhCpFDxMmBmAlNIffYw9MlMgPewrAPDHKWCxiAtmEFjYyogIrNd//frixU8/lyKIF4htdUAIsxIETiEAfMPGQRmDC0HzGt1Xz6AKUwAXJxC8VAgkb+TgIgIacV//7UE1K8Fsb477/fGN+Q1HAFw9e5auErZi5KcVANcsA+D3H+7vP+yFvA9CvBZhr8qmU4dP9Ukx3AzABP/DAwjE9hbGb1TcYnYCynCOksJYpwCR/cM9QfcPe3lSApWwAgJ5AbazPhhqCkgpvdwddnjOzlLKOZnEatH/CKKEgJ0w5CuA7WHrgL8dkNMVLMKj18BWxegBIgVHZQrIOb/cHDYO+CGfAIl1VMHjDYRvFATYQ9hMAb9Am08bJHF2dg6Z/wqq+9j3nf3wYmhjFWOoY+xirOowBWw3Nzc3R3w22+1utz0fHqFl09Z919e1WAqS61hBDsA6B4Bg/g36cNidP5bySKVtYmeDCkSr6nl8jiy6PkYsU8Dh+Omk4+EEIHosVFV17LouFhKlEioQapj7LoZYTwE2NaucXl9cvLa9XwSLUHW9DaERDayRd4ghdH++whzngM+f373LKwA+fnz/dvCLIIaqRgv6qGKAEJxQhVcd0ghfBSQHvH2P0I8h4O3Tt6Cqo+riZK8i9MV98HThcVZMQsyDiLVO7CjYEGYqSlSFAABYUwDx6T/YwEesTANWOIRxNCuRFLZWLtGqpmmW7QxAzGZdqllUDFBOAMvA9pgVuTRt2yyXmOYZCDOsjYqjeGAqEBPEBSIERkCaJue2BWbeA7jwcYACMbAl4CWI+NYBVAyQVmkOuNPxTvVubAUWJZQAJxh2ZAD8RKNyaVv7r+c5AH6MUbMKwW5NZKtamP26RgiPjkwruLMxpgBhvr29ZTEAmwsAtq3gMdbpNDIjfSBWaTUFrFJOVlvGQHrAm9XNPmEAwCqc7UWbpoDh2/WdAf4B+LQj08eGOFAAAAAASUVORK5CYII=",zombie:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAclBMVEUAAAAAzMyPj495nGVxlVtvlVxtlVtnkFYAr69ph1Z6d3cAqKgAnp5ae0gAmZlra2tXdUdOezZhYWFIdTJJcTVWScwAf39KaS0+aS07Yi9MTExGOqU2WiUAaGg4UiYAW1s/Pz86MYkwKHImIVsoKCgaGho5R/XAAAAAAXRSTlMAQObYZgAAAkJJREFUeNrtk2FzmzAMhpPNm+0akmjVqFRGEsPy///iXtnlml27laRfeWwswZ0eI3NsZkRFVWwUdHMrIqzKitKC3C4gVjhgOQLVOwQEAcvdAmViwZQiuKOFsj2J3i1gZWEVrAqEbxaIlkHMAni5QK15VRSpwTI/UFuYFnx/q2ZCQYyMEq5PSKWMJW8gZSv//av75rneqcJFxMqLemdiiq1zLraR6llimEtk2fdnpvZycfFyaeGScggkqKclLQjqWShG1RhR/XIKCEgWtCByLJs96tOTPiIROoogMhEvO0QWqf+AWqXdsQIEWfhP/AS/wXy//VXYji/Mz8N2G5iIPxYcC28EW0CsnxOwqnyqhTf/yQhy3/fjNE096Lru1CRl0dR0oGlSCAn5bteZYI7vCcYiGIYuhUa1CQH5kFIAVRbAHP8S9FeCoQhC2XgAKSDB8h9BroIMQc79aRhOwQwoqzkyTMt3Ke3m+CrIVWAxwzacTiZIRQBCgwyXgAgEtGAzk/tcdh6R2ETNkEyAOSCfBcykLjovyuy9j68CVPUAS4lWZB3AkQa8b1WlJMzqW9eykvhD9O8IkM1foR5Bg3wwlzlQJ967loQ0Ru+vD7EKMjJggnJsuKosYZpA2TsXiVnjdQvnsxVa+fm8B93QdbanlRUBkoBFWMk574RF/PUbPJ9R+OVhj/BsgnEap1xIoZsmyO1EcyYI0IFXQTz4+CoA+4f93uIPAMHYF3JTcyRokkmodbFVEo6HeNisrKysrKysrPyDP68WY0lh7YK7AAAAAElFTkSuQmCC",zombie_villager:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAt1BMVEVskkNwbWdVczVjW1tWYC5jVC9IYC4/WChUSSg4TSM4OyExPSUuNyQAAAD///+Iqlt3oEd2kk9skkOCe3RyhFFmij9ffzdwbWdedUVXdUdVczVjW1tUZkBOazBgXjhOaC1HZTdQVzdUTU1PUTNBWSiZKys/WChcQjpURypDTCQ4TSNKPj42TCpJQSRMODNCNzcxRB8vQh44OyExPSUsPRw7MTEyNyQqOSE9LSk2MiAzJBEgKxgjIyNApSiHAAAADnRSTlMAAAAAAAAAAAAAAAAAAKroblcAAAMeSURBVHja7dF/X9s2EMfxrGs3oGtxHXTSztIuE+mtyG1+2HNKxp7/49pXIoHSUhxe65/52E6cmHs7MpMXuxxR3p0iFF6+3Gz+vPztlxdP9AZN9h8IfQ1c/vEMgMkgItV/kYbN5upys/nw4dWhAOarGkS4Ay6vthmYfL8HAHNViD2w3VxdbbfPAGoMV1VVuz2w/fTpeUBt6ro6r4yWwtnZycnJ2dmrgwHMwqjODbmADgeIqrx6Q5XBKvALSlRyOCZjAJM5ZyJig0dgKkN3sw4HjwMEwTAFNlRfuIpDnkIF4DAOMAsRgGAMuYvzEBwmQRTG0SGAGlYX5hfv8AjfzYMT54QzwJ4OAkRFHc//Kc2ZhJQ9xvHCBwDCAkGE3r4P4f1bkuxB9ThRFR4FNCVFqQ9zFHp8wr7OX616XBsFUt+vUwbmf6M5ZtI6rYHgwqpfrQ4BUhb6eanv0rpba5dS32G8GwdOT1+f5iYjjQG/PvmHTwE/o5/Q5EFWhVnUNnc9FxBCfChgUd91/et7gDGu9AjgyNHnm8833wIQvgDoe7+A6to9CnQQvgQYgDwCmLqmGwhjS1Bh4scAMiQPgCZnse2zdmqbiHkS2Qm2URG11iEict47T6gAbRObaNvYNjhpbIyxzIsw42War8a4U/M8Nod5vQdibNs4DC0MGzNgpzGlJEiTLfMQUIwYNo68I3WexO2BdgCgQ3awNVlJuzrcGpP5FVkhckCIRLGLuwVaTaopJLyBGuK9gPmptRbfNFMc1qozZfFCglQKoIgDOeagA7Ym3zEOXa7MN1gASBBRlQwZQ96JOBwF4MCeidg5puQ4YMELPNgO5UeXsWVEgAYVJlMALkIBKIAAwHnH0SI8FE2xybddYr5tmzZFJAwAeWYIorcACzE5KC4wBwDLYVgu24gwPeR57KlFHpN1XRsiZgehACKz2wUJ+xnOF7uu/1pcL77Kq6caZUD2/0ZFAk9zM9XrfYvrb1L1TPXvNbFnhwqQEPOKZbVKaZW0aWIpvy+bZVOypUYT7vFx9tGz9zOcFuDN/+gIHIEjcASOwBH44cB/1lQM4ZNhKecAAAAASUVORK5CYII="};f();m();h();yt();var oT=class{constructor(e,t){this.object=e;this.animations=t}clock=new Rs;animatedObjects=new Set;state;createAnimationState(){let e=new w5(this.object),t=new Map;for(let n of this.animations)t.set(n.name,e.clipAction(n));return this.state={mixer:e,animations:this.animations,actions:t,speed:1,loop:!0},this.object.traverse(n=>{if(n instanceof je||n instanceof mi||n instanceof tr||n instanceof Oi){let r=n.onBeforeRender;n.onBeforeRender=(s,o,a,l,c,d)=>{let u=this.clock.getDelta();e.update(u),r?.(s,o,a,l,c,d)}}}),this.animatedObjects.add(this.object),this.state}playAnimation(e,t,n){let r=this.state.actions.get(e);if(!r)return console.warn(`Animation "${e}" not found`),!1;this.state.mixer.stopAllAction();let s=t??this.state.loop;return r.setLoop(s?k5:M5,1/0),r.clampWhenFinished=!s,n===void 0?r.timeScale=this.state.speed:r.timeScale=n,r.reset().fadeIn(.1).play(),!0}updateAnimationParams(e,t){e!==void 0&&(this.state.speed=e),t!==void 0&&(this.state.loop=t);for(let n of this.state.actions.values())e!==void 0&&(n.timeScale=e),t!==void 0&&(n.setLoop(t?k5:M5,1/0),n.clampWhenFinished=!t)}stopAnimations(){this.state.mixer.stopAllAction()}getDelta(){return this.clock.getDelta()}};function Xpe(i,e){let t=new oT(i,e);return t.createAnimationState(),t}function hqe(i){return"parts"in i&&Array.isArray(i.parts)?i.parts:[i]}var mqe={up:{dir:[0,1,0],u0:[0,0,1],v0:[0,0,0],u1:[1,0,1],v1:[0,0,1],corners:[[0,1,1,0,0],[1,1,1,1,0],[0,1,0,0,1],[1,1,0,1,1]]},down:{dir:[0,-1,0],u0:[1,0,1],v0:[0,0,0],u1:[2,0,1],v1:[0,0,1],corners:[[1,0,1,0,0],[0,0,1,1,0],[1,0,0,0,1],[0,0,0,1,1]]},east:{dir:[1,0,0],u0:[0,0,0],v0:[0,0,1],u1:[0,0,1],v1:[0,1,1],corners:[[1,1,1,0,0],[1,0,1,0,1],[1,1,0,1,0],[1,0,0,1,1]]},west:{dir:[-1,0,0],u0:[1,0,1],v0:[0,0,1],u1:[1,0,2],v1:[0,1,1],corners:[[0,1,0,0,0],[0,0,0,0,1],[0,1,1,1,0],[0,0,1,1,1]]},north:{dir:[0,0,-1],u0:[0,0,1],v0:[0,0,1],u1:[1,0,1],v1:[0,1,1],corners:[[1,0,0,0,1],[0,0,0,1,1],[1,1,0,0,0],[0,1,0,1,0]]},south:{dir:[0,0,1],u0:[1,0,2],v0:[0,0,1],u1:[2,0,2],v1:[0,1,1],corners:[[0,0,1,0,1],[1,0,1,1,1],[0,1,1,0,0],[1,1,1,1,0]]}};function Ype(i,e){return i[0]*e[0]+i[1]*e[1]+i[2]*e[2]}function pqe(i,e,t,n,r=!1,s=64,o=64,a=!1,l=[]){let c=new hi(0,0,0);n.rotation&&(c.x=-n.rotation[0]*Math.PI/180,c.y=-n.rotation[1]*Math.PI/180,c.z=-n.rotation[2]*Math.PI/180);for(let{dir:d,corners:u,u0:p,v0:v,u1:_,v1:b}of Object.values(mqe)){let y=Math.floor(i.positions.length/3),g=d[0]!==0,w=[];for(let x of u){let S,A;r?(S=(n.uv[0]+x[3]*n.size[0])/s,A=(n.uv[1]+x[4]*n.size[1])/o):(S=(n.uv[0]+Ype(x[3]?_:p,n.size))/s,A=(n.uv[1]+Ype(x[4]?b:v,n.size))/o);let I=g&&a?x[0]^1:x[0],R=x[1],L=g&&a?x[2]^1:x[2],M=n.inflate??0,k=new K(n.origin[0]+I*n.size[0]+(I?M:-M),n.origin[1]+R*n.size[1]+(R?M:-M),n.origin[2]+L*n.size[2]+(L?M:-M));k=k.applyEuler(c),k=k.sub(t.position),k=k.applyEuler(t.rotation),k=k.add(t.position),i.positions.push(k.x,k.y,k.z),i.normals.push(d[0],d[1],d[2]),w.push(S,A),i.skinIndices.push(e,0,0,0),i.skinWeights.push(1,0,0,0)}if(a)for(let x=0;x+1<u.length;x+=2){let S=x*2,A=w.slice(S,S+4);w[S]=A[2],w[S+1]=A[g?1:3],w[S+2]=A[0],w[S+3]=A[g?3:1]}i.uvs.push(...w),i.indices.push(y,y+1,y+2,y+2,y+1,y+3)}}function R0(i,e,t,n={},r={}){let s=t.texturewidth??64,o=t.textureheight??64,a,l=e.startsWith("block:"),c=i?.material.map;if(l){if(!i)throw new Error("worldRenderer is required for block textures");let w=e.slice(6),x=i.resourcesManager.currentResources.blocksAtlasJson.textures[w];x?(s=c?.image.width??s,o=c?.image.height??o,a=[x.u,x.v]):console.error(`Unknown block ${w}`)}let d={},u={positions:[],normals:[],uvs:[],indices:[],skinIndices:[],skinWeights:[]},p=0;for(let w of t.bones){let x=new ca;if(w.pivot&&(x.position.x=w.pivot[0],x.position.y=w.pivot[1],x.position.z=w.pivot[2]),w.bind_pose_rotation?(x.rotation.x=-w.bind_pose_rotation[0]*Math.PI/180,x.rotation.y=-w.bind_pose_rotation[1]*Math.PI/180,x.rotation.z=-w.bind_pose_rotation[2]*Math.PI/180):w.rotation&&(x.rotation.x=-w.rotation[0]*Math.PI/180,x.rotation.y=-w.rotation[1]*Math.PI/180,x.rotation.z=-w.rotation[2]*Math.PI/180),n.rotation?.[w.name]&&(x.rotation.x-=(n.rotation[w.name].x??0)*Math.PI/180,x.rotation.y-=(n.rotation[w.name].y??0)*Math.PI/180,x.rotation.z-=(n.rotation[w.name].z??0)*Math.PI/180),x.name=`bone_${w.name}`,d[w.name]=x,w.cubes)for(let S of w.cubes){let A=[];pqe(u,p,x,S,l,s,o,w.mirror,A),A.length&&(r.errors??=[],r.errors.push(...A.map(I=>`Bone ${w.name}: ${I}`)))}p++}let v=[];for(let w of t.bones)w.parent&&d[w.parent]?d[w.parent].add(d[w.name]):v.push(d[w.name]);let _=new Tl(Object.values(d)),b=new it;b.setAttribute("position",new qe(u.positions,3)),b.setAttribute("normal",new qe(u.normals,3)),b.setAttribute("uv",new qe(u.uvs,2)),b.setAttribute("skinIndex",new hc(u.skinIndices,4)),b.setAttribute("skinWeight",new qe(u.skinWeights,4)),b.setIndex(u.indices);let y=new is({transparent:!0,alphaTest:.1,side:cn}),g=new kl(b,y);if(g.add(...v),g.bind(_),g.scale.set(1/16,1/16,1/16),a){let w=c.clone();w.offset.set(a[0],a[1]),w.needsUpdate=!0,y.map=w}else N7(e,w=>{y.map||(w.magFilter=Qe,w.minFilter=Qe,w.flipY=!1,w.wrapS=ts,w.wrapT=ts,y.map=w)},()=>{let w=y.map.image.width;w&&s!==w&&(y.map.repeat.x=s/w);let x=y.map.image.height;x&&o!==x&&(y.map.repeat.y=o/x),y.needsUpdate=!0});return g}var vqe=[{pattern:"furnace_minecart",target:"minecart"},{pattern:"spawner_minecart",target:"minecart"},{pattern:"chest_minecart",target:"minecart"},{pattern:"hopper_minecart",target:"minecart"},{pattern:"command_block_minecart",target:"minecart"},{pattern:"tnt_minecart",target:"minecart"},{pattern:"glow_item_frame",target:"item_frame"},{pattern:"glow_squid",target:"squid"},{pattern:"trader_llama",target:"llama"},{pattern:"chest_boat",target:"boat"},{pattern:"spectral_arrow",target:"arrow"},{pattern:"husk",target:"zombie"},{pattern:"zombie_horse",target:"horse"},{pattern:"donkey",target:"horse"},{pattern:"skeleton_horse",target:"horse"},{pattern:"mule",target:"horse"},{pattern:"ocelot",target:"cat"},{pattern:/_minecraft$/,target:"minecraft"},{pattern:/_boat$/,target:"boat"},{pattern:/_raft$/,target:"boat"},{pattern:/_horse$/,target:"horse"},{pattern:/_zombie$/,target:"zombie"},{pattern:/_arrow$/,target:"zombie"}];function Jpe(i){for(let e of vqe)if(typeof e.pattern=="string"){if(e.pattern===i)return e.target}else if(e.pattern.test(i))return e.target}var Kpe=i=>dpe[i],Zpe={zombie:1.85,husk:1.85,arrow:.0025},gqe={zombie:new ut(0,1,0),husk:new ut(0,1,0),boat:new ut(0,-1,0),arrow:new ut(0,-.9,0)},tl=class{mesh;animations;animationControllers=[];constructor(e,t,n,r={},s={}){let o=t,a=Jpe(t);if(a&&(t=a,s.tempMap=a),r.customModel){let c=hqe(r.customModel);this.mesh=new At;for(let d=0;d<c.length;d++){let{modelPath:u,modelType:p,metadata:v}=c[d],_=new At;switch(_.name=`custom_part_${d}`,p){case"gltf":{new P_().parseAsync(u,"").then(y=>{if(_.add(y.scene),v?.scale){let g=v.scale;_.scale.set(g,g,g)}if(v?.offset){let{x:g=0,y:w=0,z:x=0}=v.offset;_.position.set(g,w,x)}if(v?.texture){let g=v1(v.texture);_.traverse(w=>{w instanceof je&&(w.material=new st({map:g,transparent:!0,alphaTest:.1}))})}if(y.animations?.length){this.animations=[...this.animations??[],...y.animations];let g=Xpe(_,y.animations);this.animationControllers.push(g);let w=v?.animation,x=v?.animationLoop??!0;w?g.playAnimation(w,x):g.playAnimation(y.animations[0].name,x)}}).catch(y=>{console.error("Failed to load GLTF model:",y)});break}case"obj":{let y=new K1().parse(u);if(v?.scale){let{scale:g}=v;y.scale.set(g,g,g)}if(v?.offset){let{x:g=0,y:w=0,z:x=0}=v.offset;y.position.set(g,w,x)}if(v?.texture){let g=v1(v.texture),w=new st({map:g,transparent:!0,alphaTest:.1});y.traverse(x=>{x instanceof je&&(x.material=w)})}_.add(y);break}case"bedrock":{let b=JSON.parse(u);if(v?.scale&&_.scale.set(v.scale,v.scale,v.scale),v?.offset){let{x:y=0,y:g=0,z:w=0}=v.offset;_.position.set(y,g,w)}for(let[y,g]of Object.entries(b.geometry)){let w=v?.textures?.[y]??b.textures?.[y];if(!w)continue;let x=R0(n,w.endsWith(".png")||w.startsWith("data:image/")||w.startsWith("block:")?w:w+".png",g,r,s);x.name=`geometry_${y}`,_.add(x)}break}}this.mesh.add(_)}s.type=c.length===1?c[0].modelType:"special";return}if(md[t]){let c=new K1,d={zombie_horse:`textures/${e}/entity/horse/horse_zombie.png`,husk:spe,skeleton_horse:`textures/${e}/entity/horse/horse_skeleton.png`,donkey:`textures/${e}/entity/horse/donkey.png`,mule:`textures/${e}/entity/horse/mule.png`,ocelot:ope,arrow:ape,spectral_arrow:lpe,tipped_arrow:cpe},u=d[o]||d[t];u&&(s.textureMap=!0);let p=u||sT[t];if(sT[t]&&(s.isHardcodedTexture=!0),!p)throw new Error(`No texture for ${t}`);let v=v1(p),_=new st({map:v,transparent:!0,alphaTest:.1}),b=c.parse(md[t]),y=Zpe[o]||Zpe[t];y&&b.scale.set(y,y,y);let g=gqe[o];g&&b.position.set(g.x,g.y,g.z),b.traverse(w=>{w instanceof je&&(w.material=_,w.name==="Head layer"&&(w.visible=!1),w.name==="Head"&&r.rotation?.head&&(w.rotation.x-=(r.rotation.head.x??0)*Math.PI/180,w.rotation.y-=(r.rotation.head.y??0)*Math.PI/180,w.rotation.z-=(r.rotation.head.z??0)*Math.PI/180))}),this.mesh=b,s.type="obj";return}let l=Kpe(t);if(l){this.mesh=new At;for(let[c,d]of Object.entries(l.geometry)){let u=r.textures?.[c]??l.textures[c];if(!u)continue;let p=R0(n,u.endsWith(".png")||u.startsWith("data:image/")||u.startsWith("block:")?u:u+".png",d,r,s);p.name=`geometry_${c}`,this.mesh.add(p)}s.type="bedrock"}}playAnimation(e,t=!1){if(!this.animationControllers.length){console.warn("No animation controller available");return}let n=!1;for(let r of this.animationControllers)r.playAnimation(e,t)&&(n=!0);n||console.warn(`Animation "${e}" not found on any custom model part`)}update(e){}static getStaticData(e){if(e=Jpe(e)||e,md[e])return{boneNames:[]};let t=Kpe(e);if(!t)throw new Error(`Unknown entity ${e}`);return{boneNames:Object.values(t.geometry).flatMap(n=>n.name)}}};globalThis.EntityMesh=tl;f();m();h();f();m();h();var Qpe="";f();m();h();var e2e="";f();m();h();var t2e="";f();m();h();var n2e="";f();m();h();var r2e="";f();m();h();var i2e="";f();m();h();var s2e="";f();m();h();var o2e="";f();m();h();var a2e="";f();m();h();var l2e="";f();m();h();var c2e="";f();m();h();var d2e="";f();m();h();var u2e="";f();m();h();var f2e="";f();m();h();var h2e="";f();m();h();var aT="";var C0={skull:{bones:[{name:"head",pivot:[0,12,0],cubes:[{origin:[-4,0,-4],size:[8,8,8],uv:[0,0],inflate:1}]},{name:"overlay",parent:"head",pivot:[0,12,0],cubes:[{origin:[-4,0,-4],size:[8,8,8],uv:[32,0],inflate:1.2}]}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},head:{bones:[{name:"armor",pivot:[0,12,0]},{name:"head",parent:"armor",pivot:[0,12,0],cubes:[{origin:[-4,23,-4],size:[8,8,8],uv:[0,0],inflate:1}]},{name:"overlay",parent:"head",pivot:[0,12,0],cubes:[{origin:[-4,23,-4],size:[8,8,8],uv:[32,0],inflate:1.2}]}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},chest:{bones:[{name:"armor",pivot:[0,12,0]},{name:"body",parent:"armor",pivot:[0,13,0],cubes:[{origin:[-4,12,-2],size:[8,12,4],uv:[16,16],inflate:1}]},{name:"leftarm",parent:"armor",pivot:[5,10,0],cubes:[{origin:[4,12,-2],size:[4,12,4],uv:[40,16],inflate:.85}]},{name:"rightarm",parent:"armor",pivot:[-5,10,0],cubes:[{origin:[-8,12,-2],size:[4,12,4],uv:[40,16],inflate:.85}],mirror:!0}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},legs:{bones:[{name:"armor",pivot:[0,12,0]},{name:"body",parent:"armor",pivot:[0,13,0],cubes:[{origin:[-4,12,-2],size:[8,12,4],uv:[16,16],inflate:.5}]},{name:"leftleg",parent:"armor",pivot:[1.9,1,0],cubes:[{origin:[-.1,0,-2],size:[4,12,4],uv:[0,16],inflate:.5}]},{name:"rightleg",parent:"armor",pivot:[-1.9,1,0],cubes:[{origin:[-3.9,0,-2.01],size:[4,12,4],uv:[0,16],inflate:.5}],mirror:!0}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},feet:{bones:[{name:"armor",pivot:[0,12,0]},{name:"leftleg",parent:"armor",pivot:[1.9,1,0],cubes:[{origin:[-.1,0,-2],size:[4,12,4],uv:[0,16],inflate:.8}]},{name:"rightleg",parent:"armor",pivot:[-1.9,1,0],cubes:[{origin:[-3.9,.01,-2.01],size:[4,12,4],uv:[0,16],inflate:.8}],mirror:!0}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32}};var m2e={leather_layer_1:a2e,leather_layer_1_overlay:l2e,leather_layer_2:c2e,leather_layer_2_overlay:d2e,chainmail_layer_1:Qpe,chainmail_layer_2:e2e,iron_layer_1:s2e,iron_layer_2:o2e,diamond_layer_1:t2e,diamond_layer_2:n2e,golden_layer_1:r2e,golden_layer_2:i2e,netherite_layer_1:u2e,netherite_layer_2:f2e,turtle_layer_1:h2e};var b2e=p1(yi),bqe=120,lT=i=>i*(Math.PI/180),cT=i=>Math.max(0,Math.min(1,i)),dT=(i,e,t)=>Math.max(e,Math.min(t,i)),Q1=i=>(i=(i+Math.PI)%(Math.PI*2),i<0&&(i+=Math.PI*2),i-Math.PI);function xqe(i){return i<0&&(i=4294967295+i+1>>>0),i.toString(16)}function wqe(i){if(i===void 0)return;if(parseInt(i,10)===0)return"rgba(0, 0, 0, 0)";let e=xqe(parseInt(i,10));return e.length===8?`#${e.slice(2,8)}${e.slice(0,2)}`:`#${e}`}function p2e(i,e){return i===void 0?e:i instanceof Ut?i:Array.isArray(i)?new Ut(i[0],i[1],i[2],i[3]):new Ut(i.x,i.y,i.z,i.w)}function Uo(i,e){return i===void 0?e??new hi:i instanceof hi?i:i.yaw!==void 0&&i.pitch!==void 0&&i.roll!==void 0?new hi(-lT(i.pitch),-lT(i.yaw),lT(i.roll),"ZYX"):i.x!==void 0&&i.y!==void 0&&i.z!==void 0?new hi(i.z,i.y,i.x,"ZYX"):Array.isArray(i)?new hi(i[0],i[1],i[2]):e??new hi}var B_=Math.PI*2;function v2e(i,e){let t=((e-i)%B_+B_)%B_;return t>Math.PI?t-B_:t}function x2e({username:i,nameTagBackgroundColor:e="rgba(0, 0, 0, 0.3)",nameTagTextOpacity:t=255},{fontFamily:n="mojangles"},r){let s=zr(64,64),o=(0,fT.default)(r),a=s.getContext("2d");if(!a)throw new Error("Could not get 2d context");let l=48,c=5;a.font=`${l}px ${n}`;let d=String(typeof i=="string"?i:new o(i).toString()).split(`
28781
- `),u=0;for(let v of d){let _=a.measureText(v).width+c*2;_>u&&(u=_)}if(s.width=u,s.height=(l+c)*d.length,a.fillStyle=e,a.fillRect(0,0,s.width,s.height),a.globalAlpha=t/255,!!kA(i,o,s,l,"white",-c+l))return a.globalAlpha=1,s}globalThis.getUsernameTexture=x2e;var D_=(i,e,t,n)=>{for(let l of t.children)l.name==="nametag"&&l.removeFromParent();if(i.username===void 0||i.username===null||(typeof i.username=="string"?i.username:new((0,fT.default)(n))(i.username).toString()).startsWith("EMPTY"))return;let s=x2e(i,e,n);if(!s)return;let o=new Gt(s);o.needsUpdate=!0;let a;if(i.nameTagFixed){let l=new _n,c=new st({map:o});c.transparent=!0,a=new je(l,c),a.rotation.set(i.pitch,_t.degToRad(i.yaw+180),0),a.position.y+=i.height+.3}else{let l=new ns({map:o});a=new Oi(l),a.position.y+=i.height+.6}return a.renderOrder=1e3,a.scale.set(s.width*.005,s.height*.005,1),i.nameTagRotationRight&&a.applyQuaternion(i.nameTagRotationRight),i.nameTagScale&&a.scale.multiply(i.nameTagScale),i.nameTagRotationLeft&&a.applyQuaternion(i.nameTagRotationLeft),i.nameTagTranslation&&a.position.add(i.nameTagTranslation),a.name="nametag",t.add(a),a},g2e={},Sqe=i=>i.charAt(0)===i.charAt(0).toUpperCase();function _2e(i){if(i!=null){if(Array.isArray(i))return i;if(typeof i=="object"){let e=i,t=Object.keys(e).filter(n=>/^\d+$/.test(n)).map(Number).sort((n,r)=>n-r);if(t.length&&t[0]===0&&t.every((n,r)=>n===r))return t.map(n=>e[String(n)])}}}function Eqe(i,e,t,n,r){if(e.name)try{let c=(Sqe(e.name)?Mk(e.name):e.name).toLowerCase(),d=new tl("1.16.4",c,t,r);if(d.mesh)return D_(e,n,d.mesh,t.version),d.mesh}catch(c){reportError?.(c)}if(!i||!(0,y2e.isEntityAttackable)(i,e))return;let s=new nn(e.width,e.height,e.width);s.translate(0,e.height/2,0);let o=new st({color:16711935}),a=new je(s,o);return(g2e[e.name]=(g2e[e.name]||0)+1)<6&&D_({username:e.name,height:e.height},n,a,t.version),a}var U_=class{constructor(e,t){this.worldRenderer=e;this.mcData=t;this.debugMode="none",this.onSkinUpdate=()=>{},this.watchResourcesUpdates()}entities={};playerEntity=null;entitiesOptions={fontFamily:"mojangles"};debugMode;onSkinUpdate;clock=new Rs;currentlyRendering=!0;cachedMapsImages={};itemFrameMaps={};pendingModelOverrides=new Map;motionCache=new Map;_wasThirdPerson=!1;_tpBodyYaw=0;_tpHasBodyYaw=!1;updateAutoWalkFlags(e,t,n,r){if(!t.playerObject?.animation)return;let s=t.playerObject.animation;if(n<=0)return;let o=r??t.position,a=this.motionCache.get(e);if(!a){this.motionCache.set(e,{pos:o.clone(),speed:0}),s.isMoving=!1,s.isRunning=!1,s.moveAmount=0,s.runAmount=0;return}let l=o.x-a.pos.x,c=o.z-a.pos.z;a.pos.copy(o);let d=Math.hypot(l,c)/Math.max(n,1e-6),u=1-Math.exp(-n*12);a.speed+=(d-a.speed)*u;let p=a.speed,v=(S,A,I)=>{let R=cT((I-S)/(A-S));return R*R*(3-2*R)},_=.08,b=.6,y=4.3,g=5.6,w=v(_,b,p),x=v(y,g,p);s.moveAmount=w,s.runAmount=x,s.isMoving=w>.15,s.isRunning=x>.55}getLocalSneak(){let e=this.worldRenderer.playerStateReactive;return e?.movementState==="SNEAKING"||e?.movementState==="CROUCHING"||!!e?.isSneaking||!!e?.sneaking||!!e?.isCrouching||!!e?.crouching||!!e?.controls?.sneak||!!e?.controlState?.sneak}updateThirdPersonHeadAndBody(e,t){let n=e.playerObject?.animation,r=this.worldRenderer.cameraShake.getBaseRotation(),s=r.yaw,o=r.pitch,a=cT(n?.moveAmount??(n?.isMoving?1:0)),l=cT(n?.runAmount??(n?.isRunning?1:0)),c=a>.15;if(this._tpHasBodyYaw||(this._tpHasBodyYaw=!0,this._tpBodyYaw=s),c){let _=1-Math.exp(-t*(18+10*l));this._tpBodyYaw=this._tpBodyYaw+Q1(s-this._tpBodyYaw)*_,e.rotation.set(0,this._tpBodyYaw,0);let b=(25-8*l)*Math.PI/180,y=dT(Q1(s-this._tpBodyYaw),-b,b);n&&"lookYaw"in n&&(n.lookYaw=y),n&&"lookPitch"in n&&(n.lookPitch=-o);return}let d=85*Math.PI/180,u=55*Math.PI/180,p=Q1(s-this._tpBodyYaw);p=dT(p,-d,d);let v=Math.abs(p)-u;if(v>0){let _=v/(d-u),b=s-Math.sign(p)*u,y=1-Math.exp(-t*(6+10*_));this._tpBodyYaw=this._tpBodyYaw+Q1(b-this._tpBodyYaw)*y,p=Q1(s-this._tpBodyYaw),p=dT(p,-d,d)}else{let _=1-Math.exp(-t*5);this._tpBodyYaw=this._tpBodyYaw+Q1(s-this._tpBodyYaw)*(_*.15)}e.rotation.set(0,this._tpBodyYaw,0),n&&"lookYaw"in n&&(n.lookYaw=p),n&&"lookPitch"in n&&(n.lookPitch=-o)}get entitiesByName(){let e={};for(let t of Object.values(this.entities))t.realName&&(e[t.realName]=e[t.realName]||[],e[t.realName].push(t));return e}get entitiesRenderingCount(){return Object.values(this.entities).filter(e=>e.visible).length}getDebugString(){let e=Object.keys(this.entities).length,t=this.entitiesRenderingCount,n=Object.values(this.entities).filter(s=>s.playerObject),r=n.filter(s=>s.visible);return`${t}/${e} ${r.length}/${n.length}`}handlePlayerEntity(e){if(!this.playerEntity){let t=new at;t.originalEntity={...e,name:"player"};let n=new at,r=this.setupPlayerObject(e,n,{});t.playerObject=r,t.add(n),t.name="player_entity",this.playerEntity=t,this.worldRenderer.scene.add(t),this.updatePlayerSkin(e.id,e.username,e.uuid??void 0,yi)}this.playerEntity.originalEntity={...e,name:"player"},e.position&&(this.worldRenderer.sceneOrigin.getWorldPosition(this.playerEntity)||this.worldRenderer.sceneOrigin.track(this.playerEntity),this.playerEntity.position.set(e.position.x,e.position.y,e.position.z)),e.yaw!==void 0&&(this.playerEntity.rotation.y=e.yaw),this.updateEntityEquipment(this.playerEntity,e)}clear(){for(let e of Object.values(this.entities))this.worldRenderer.sceneOrigin.removeAndUntrack(e),qn(e);this.entities={},this.currentSkinUrls={},this.motionCache.clear(),this._wasThirdPerson=!1,this._tpHasBodyYaw=!1,this.playerEntity&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.playerEntity),qn(this.playerEntity),this.playerEntity=null)}reloadEntities(){for(let e of Object.values(this.entities))this.update({...e.originalEntity,delete:!0},{}),this.update(e.originalEntity,{})}watchResourcesUpdates(){this.worldRenderer.resourcesManager.on("assetsTexturesUpdated",()=>this.reloadEntities()),this.worldRenderer.resourcesManager.on("assetsInventoryReady",()=>this.reloadEntities())}setDebugMode(e,t=null){this.debugMode=e;for(let n of t?[t]:Object.values(this.entities)){let r=n.children.find(s=>s.name==="debug");r.visible=!1,this.debugMode==="basic"&&(r.visible=!0)}}setRendering(e,t=null){this.currentlyRendering=e;for(let n of t?[t]:Object.values(this.entities))e?this.worldRenderer.scene.children.includes(n)||this.worldRenderer.scene.add(n):this.worldRenderer.scene.remove(n)}playEntityModelAnimation(e,t,n=!1){let r=this.entities[e];r&&r.traverse(s=>{s instanceof tl&&s.playAnimation(t,n)})}render(){let e=this.worldRenderer.worldRendererConfig.renderEntities;e!==this.currentlyRendering&&this.setRendering(e);let t=this.clock.getDelta(),n=Math.min(t,1/30),r=this.worldRenderer.viewerChunkPosition,s=10*10,o=this.worldRenderer.playerStateUtils.isThirdPerson();if(o!==this._wasThirdPerson){this._wasThirdPerson=o;let a=String(this.playerEntity?.originalEntity.id??"player_entity");this.motionCache.delete(a);let l=this.playerEntity?.playerObject?.animation;l?.resetLocomotion&&l.resetLocomotion(),this._tpHasBodyYaw=!1}for(let[a,l]of[...Object.entries(this.entities),["player_entity",this.playerEntity]]){if(!l)continue;let c=a==="player_entity",d=String(c?this.playerEntity?.originalEntity.id??"player_entity":a);if(c)if(l.visible=o,o){let p=this.worldRenderer.playerStateReactive.eyeHeight;l.position.set(this.worldRenderer.cameraWorldPos.x,this.worldRenderer.cameraWorldPos.y-p,this.worldRenderer.cameraWorldPos.z);let v=this.worldRenderer.playerStateReactive.position;if(v&&typeof v.x=="number")this.updateAutoWalkFlags(d,l,t,new K(v.x,v.y,v.z));else{let _=this.worldRenderer.sceneOrigin.getWorldPosition(l);this.updateAutoWalkFlags(d,l,t,_?new K(_.x,_.y,_.z):l.position)}this.updateThirdPersonHeadAndBody(l,n)}else{let p=this.worldRenderer.sceneOrigin.getWorldPosition(l);this.updateAutoWalkFlags(d,l,t,p?new K(p.x,p.y,p.z):l.position)}else{let p=this.worldRenderer.sceneOrigin.getWorldPosition(l);this.updateAutoWalkFlags(d,l,t,p?new K(p.x,p.y,p.z):l.position)}let{playerObject:u}=l;if(u?.animation){let p=u.animation,_=(Number(l.originalEntity?.metadata?.[0]??0)&2)!==0,b=this.getLocalSneak();"isCrouched"in p&&(p.isCrouched=c?b:_),u.animation.update(u,n)}if(l.traverse(p=>{p instanceof tl&&p.update(n)}),!c&&r&&l.position){let p=l.position.x-r.x,v=l.position.y-r.y,_=l.position.z-r.z,b=p*p+v*v+_*_;l.visible=!!(b<s||this.worldRenderer.shouldObjectVisible(l)),this.maybeRenderPlayerSkin(a)}l.visible&&this.syncArmorPositions(l)}}syncArmorPositions(e){e.playerObject&&e.traverse(t=>{if(!t.name.startsWith("geometry_armor_"))return;let{skin:n}=e.playerObject;switch(t.name){case"geometry_armor_head":t.children[0]?.children[0]&&t.children[0].children[0].rotation.set(-n.head.rotation.x,n.head.rotation.y,n.head.rotation.z,n.head.rotation.order);break;case"geometry_armor_legs":t.children[0]&&(t.children[0].children[2]&&t.children[0].children[2].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,n.leftLeg.rotation.z,n.leftLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order));break;case"geometry_armor_feet":t.children[0]&&(t.children[0].children[0]&&t.children[0].children[0].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,-n.leftLeg.rotation.z,n.leftLeg.rotation.order));break}})}getPlayerObject(e){return this.playerEntity?.originalEntity.id===e?this.playerEntity?.playerObject:this.entities[e]?.playerObject}uuidPerSkinUrlsCache={};currentSkinUrls={};isCanvasBlank(e){return!e.getContext("2d")?.getImageData(0,0,e.width,e.height).data.some(t=>t!==0)}async updatePlayerSkin(e,t,n,r,s=void 0){r!==yi&&this.loadedSkinEntityIds.add(String(e)),n&&((typeof r=="string"||typeof s=="string")&&(this.uuidPerSkinUrlsCache[n]={}),typeof r=="string"&&(this.uuidPerSkinUrlsCache[n].skinUrl=r),typeof s=="string"&&(this.uuidPerSkinUrlsCache[n].capeUrl=s),r===!0&&(r=this.uuidPerSkinUrlsCache[n]?.skinUrl??r),s??=this.uuidPerSkinUrlsCache[n]?.capeUrl);let a=this.getPlayerObject(e);if(!a)return;if(r===!0){if(!t)return;let c=await h0(t,"skin");if(!this.getPlayerObject(e)||!c)return;r=c}if(typeof r!="string")throw new Error("Invalid skin url");if(this.currentSkinUrls[String(e)]===r){if(s){if(s===!0&&t){let c=await h0(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}return}r!==yi&&(this.currentSkinUrls[String(e)]=r);let l=this.worldRenderer.worldRendererConfig.renderEars||t==="deadmau5";this.loadAndApplySkin(e,r,l).then(async()=>{if(s){if(s===!0&&t){let c=await h0(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}}),a.cape.visible=!1,s||(a.backEquipment=null,a.elytra.map=null,a.cape.map&&a.cape.map.dispose(),a.cape.map=null)}async loadAndApplySkin(e,t,n){let r=this.getPlayerObject(e);if(r)try{let s;if(r=this.getPlayerObject(e),!r)return;let o,a;if(t===yi){let c=await Bo(yi);s=c.image,o=new mn(c.canvas),a=c.canvas}else{let{canvas:c,image:d}=await Bo(t);s=d,o=new mn(c),a=c}o.magFilter=Qe,o.minFilter=Qe,o.needsUpdate=!0,r.skin.map=o,r.skin.modelType=OA(a),r.skin.isCustom=t!==yi,Tk(r);let l;if(s?n&&(l=zr(64,64),NA(l,s),n=!this.isCanvasBlank(l)):n=!1,n){let c=new mn(l);c.magFilter=Qe,c.minFilter=Qe,c.needsUpdate=!0,r.ears.map=c,r.ears.visible=!0}else r.ears.map=null,r.ears.visible=!1;this.onSkinUpdate?.()}catch(s){console.error("Error loading skin:",s)}}async loadAndApplyCape(e,t){let n=this.getPlayerObject(e);if(n)try{let{canvas:r,image:s}=await Bo(t);if(n=this.getPlayerObject(e),!n)return;BA(r,s);let o=new mn(r);o.magFilter=Qe,o.minFilter=Qe,o.needsUpdate=!0,n.cape.map=o,n.cape.visible=!0,n.elytra.map=o,this.onSkinUpdate?.(),n.backEquipment||(n.backEquipment="cape")}catch(r){console.error("Error loading cape:",r)}}debugSwingArm(){let e=Object.values(this.entities).find(n=>n.playerObject?.animation);if(!e||!e.playerObject?.animation)return;let t=e.playerObject.animation;t.swingArm&&t.swingArm()}playAnimation(e,t){let n=String(e);if(this.playerPerAnimation[n]===t)return;if(this.playerPerAnimation[n]=t,e==="player_entity"&&this.playerEntity?.playerObject){let{playerObject:s}=this.playerEntity;if(t==="oneSwing"){s.animation&&s.animation.swingArm&&s.animation.swingArm();return}s.animation&&s.animation.switchAnimationCallback!==void 0&&(s.animation.switchAnimationCallback=()=>{let o=s.animation;o&&(o.isMoving=t==="walking"||t==="running"||t==="crouchWalking",o.isRunning=t==="running",o.isCrouched=t==="crouch"||t==="crouchWalking")});return}let r=this.getPlayerObject(e);if(r){if(t==="oneSwing"){r.animation&&r.animation.swingArm&&r.animation.swingArm();return}r.animation&&r.animation.switchAnimationCallback!==void 0&&(r.animation.switchAnimationCallback=()=>{let s=r.animation;s&&(s.isMoving=t==="walking"||t==="running"||t==="crouchWalking",s.isRunning=t==="running",s.isCrouched=t==="crouch"||t==="crouchWalking")});return}if(this.playerEntity?.playerObject){let{playerObject:s}=this.playerEntity;if(t==="oneSwing"){s.animation&&s.animation.swingArm&&s.animation.swingArm();return}s.animation&&s.animation.switchAnimationCallback!==void 0&&(s.animation.switchAnimationCallback=()=>{let o=s.animation;o&&(o.isMoving=t==="walking"||t==="running"||t==="crouchWalking",o.isRunning=t==="running",o.isCrouched=t==="crouch"||t==="crouchWalking")})}}parseEntityLabel(e){if(e)try{if(e.type==="string")return e.value;let t=typeof e=="string"?Jp.default.simplify(Jp.default.parse(e)):N_.default.simplify(e);return Sk(t).map(this.textFromComponent).join("")}catch{return e}}textFromComponent(e){return typeof e=="string"?e:e.text??""}getItemMesh(e,t,n=!1,r){!e.nbt&&e.nbtData&&(e.nbt=e.nbtData);let s=this.worldRenderer.getItemRenderData(e,t);if(!(r&&r===s?.modelName)){if(s&&"resolvedModel"in s){let o=Whe(this.worldRenderer.material,s.resolvedModel,s.modelName,this.worldRenderer.resourcesManager.currentResources.worldBlockProvider,this.worldRenderer.resourcesManager.currentResources.mcData),a=1;t["minecraft:display_context"]==="ground"?a=.5:t["minecraft:display_context"]==="thirdperson"&&(a=6),o.scale.set(a,a,a);let l=new at;return l.add(o),{mesh:l,isBlock:!0,modelName:s.modelName}}if(s){let o=s.renderInfo?.texture==="blocks"?this.worldRenderer.material.map:this.worldRenderer.itemsTexture,{u:a,v:l,su:c,sv:d}=s,v=jme(o,{u:a,v:l,sizeX:c??1,sizeY:d??1},{faceCamera:n,use3D:!n}),_=1;return t["minecraft:display_context"]==="ground"?_=.5:t["minecraft:display_context"]==="thirdperson"&&(_=6),v.mesh.scale.set(_,_,_),{mesh:v.mesh,isBlock:!1,modelName:s.modelName,cleanup:v.cleanup}}}}setVisible(e,t){t?e.scale.set(1,1,1):e.scale.set(0,0,0)}update(e,t){let n=e.name==="player";(e.name==="zombie_villager"||e.name==="husk")&&(t.texture=`textures/1.16.4/entity/${e.name==="zombie_villager"?"zombie_villager/zombie_villager.png":`zombie/${e.name}.png`}`),e.name==="glow_item_frame"&&(t.textures||(t.textures=[]),t.textures.background="block:glow_item_frame");let r=this.entities[e.id],s=!r;if(e.delete){if(!r)return;r.userData._posTween?.stop(),r.additionalCleanup&&r.additionalCleanup(),r.traverse(_=>{_.additionalCleanup&&_.additionalCleanup()}),this.onRemoveEntity(e),this.worldRenderer.sceneOrigin.removeAndUntrack(r),qn(r),delete this.entities[e.id];return}let o;if(r===void 0){this.beforeEntityAdded(e);let _=new at;if(_.originalEntity=e,e.name==="item"||e.name==="tnt"||e.name==="falling_block"||e.name==="snowball"||e.name==="egg"||e.name==="ender_pearl"||e.name==="experience_bottle"||e.name==="splash_potion"||e.name==="lingering_potion"){let g=e.name==="tnt"||e.type==="projectile"?{name:e.name}:e.name==="falling_block"?{blockState:e.objectData}:_2e(e.metadata)?.find(w=>typeof w=="object"&&w?.itemCount);if(g){let w=this.getItemMesh(g,{"minecraft:display_context":"ground"},e.type==="projectile");if(w){if(o=w.mesh,e.name==="item"||e.type==="projectile"?(o.scale.set(.5,.5,.5),o.position.set(0,e.name==="item"?.2:.1,0)):(o.scale.set(2,2,2),o.position.set(0,.5,0)),e.name==="item"){let x=new Rs;o.onBeforeRender=()=>{let S=x.getDelta();o.rotation.y+=S}}_.additionalCleanup=()=>{w.cleanup&&w.cleanup()}}}}else if(n){let g=new at,w=this.setupPlayerObject(e,g,t);if(_.playerObject=w,o=g,e.username){let x=D_(e,{fontFamily:"mojangles"},g,this.worldRenderer.version);x&&(x.position.y=w.position.y+w.scale.y*16+3,x.scale.multiplyScalar(12))}}else o=Eqe(this.mcData,e,this.worldRenderer,this.entitiesOptions,{...t,customModel:e.customModel});if(!o)return;o.name="mesh";let b=e.pos??e.position;this.worldRenderer.sceneOrigin.track(_),_.position.set(b.x,b.y,b.z);let y=new yo(o,e.type==="hostile"?16711680:e.type==="mob"?65280:e.type==="player"?255:16753920);y.name="debug",_.add(o),_.add(y),y.visible=!1,this.worldRenderer.scene.add(_),r=_,r.name="entity",r.realName=e.name,this.entities[e.id]=r,n&&this.updatePlayerSkin(e.id,e.username,t?.texture?e.uuid:void 0,t?.texture||yi),this.setDebugMode(this.debugMode,_),this.setRendering(this.currentlyRendering,_),this.afterAddEntity(e)}else o=r.children.find(_=>_.name==="mesh");this.updateEntityEquipment(r,e);let a=w2e(e,this.mcData),c=(_2e(e.metadata)?.[0]??e.metadata?.[0]??0)&32||this.worldRenderer.playerStateReactive.cameraSpectatingEntity===e.id&&this.worldRenderer.playerStateUtils.isSpectator();for(let _ of o.children??[])_.name!=="nametag"&&(_.visible=!c);a.baby?r.scale.set(.5,.5,.5):r.scale.set(1,1,1);let d=O_("text_display",e,this.mcData),u=d?.text||a.custom_name_visible&&a.custom_name;if(e.name!=="player"&&u){let _=d&&(d.billboard_render_constraints==="fixed"||!d.billboard_render_constraints),b=d&&!(parseInt(d.style_flags,10)&4)?wqe(d.background_color):void 0,y;if(d?.text_opacity){let g=parseInt(d?.text_opacity,10);y=g>0?g:256-g}D_({...e,username:typeof u=="string"?Jp.default.simplify(Jp.default.parse(u)):N_.default.simplify(u),nameTagBackgroundColor:b,nameTagTextOpacity:y,nameTagFixed:_,nameTagScale:d?.scale,nameTagTranslation:d&&(d.translation||new K(0,0,0)),nameTagRotationLeft:p2e(d?.left_rotation),nameTagRotationRight:p2e(d?.right_rotation)},this.entitiesOptions,o,this.worldRenderer.version)}let p=O_("armor_stand",e,this.mcData);if(p){let _=(parseInt(p.client_flags,10)&1)!==0,b=(parseInt(p.client_flags,10)&4)!==0,y=(parseInt(p.client_flags,10)&8)===0,g=(parseInt(p.client_flags,10)&16)!==0;o.castShadow=!g,o.receiveShadow=!g,_?r.scale.set(.5,.5,.5):r.scale.set(1,1,1),r.traverse(w=>{switch(w.name){case"bone_baseplate":this.setVisible(w,y),w.rotation.y=-r.rotation.y;break;case"bone_head":p.head_pose&&w.setRotationFromEuler(Uo(p.head_pose));break;case"bone_body":p.body_pose&&w.setRotationFromEuler(Uo(p.body_pose));break;case"bone_rightarm":w.parent?.name!=="bone_armor"&&this.setVisible(w,b),p.left_arm_pose?w.setRotationFromEuler(Uo(p.left_arm_pose)):w.setRotationFromEuler(Uo({yaw:-10,pitch:-10,roll:0}));break;case"bone_leftarm":w.parent?.name!=="bone_armor"&&this.setVisible(w,b),p.right_arm_pose?w.setRotationFromEuler(Uo(p.right_arm_pose)):w.setRotationFromEuler(Uo({yaw:10,pitch:-10,roll:0}));break;case"bone_rightleg":p.left_leg_pose?w.setRotationFromEuler(Uo(p.left_leg_pose)):w.setRotationFromEuler(Uo({yaw:-1,pitch:-1,roll:0}));break;case"bone_leftleg":p.right_leg_pose?w.setRotationFromEuler(Uo(p.right_leg_pose)):w.setRotationFromEuler(Uo({yaw:1,pitch:1,roll:0}));break}})}let v=O_("item_frame",e,this.mcData);if(v||(v=O_("glow_item_frame",e,this.mcData)),v){let _=v?.item??e.metadata?.[8];if(o.scale.set(1,1,1),o.position.set(0,0,-.5),r.rotation.x=-e.pitch,r.children.find(b=>{if(b.name.startsWith("map_")){qn(b);let y=parseInt(b.name.split("_")[1],10);return this.itemFrameMaps[y]=this.itemFrameMaps[y]?.filter(g=>g!==b),b instanceof je&&b.material?.map?.dispose(),!0}else if(b.name==="item")return qn(b),!0;return!1})?.removeFromParent(),_&&(_.itemId??_.blockId??0)!==0){let b=v.rotation??0,y=_.nbtData?.value?.map?.value??_.components?.find(g=>g.type==="map_id")?.data;if(y)o.scale.set(16/12,16/12,1),this.addMapModel(r,y,b);else{let g=this.getItemMesh(_,{"minecraft:display_context":"fixed"});g&&(g.mesh.position.set(0,0,-.05),g.isBlock?g.mesh.scale.set(.25,.25,.25):g.mesh.scale.set(.5,.5,.5),g.mesh.rotateY(Math.PI),g.mesh.rotateZ(-b*Math.PI/4),g.mesh.name="item",r.add(g.mesh))}}}e.username!==void 0&&(r.username=e.username),this.updateNameTagVisibility(r),this.updateEntityPosition(e,s,t)}updateEntityPosition(e,t,n){let r=this.entities[e.id];if(!r)return;let s=t?0:bqe;if(e.position){let o=this.worldRenderer.sceneOrigin.getWorldPosition(r)??{x:e.position.x,y:e.position.y,z:e.position.z};r.userData._tweenTarget||(r.userData._tweenTarget={x:o.x,y:o.y,z:o.z}),r.userData._posTween?.stop(),r.userData._posTween=new br(r.userData._tweenTarget).to({x:e.position.x,y:e.position.y,z:e.position.z},s).onUpdate(()=>{r.position.set(r.userData._tweenTarget.x,r.userData._tweenTarget.y,r.userData._tweenTarget.z)}).start()}if(typeof e.yaw=="number"&&Number.isFinite(e.yaw)){let o=v2e(r.rotation.y,e.yaw);new br(r.rotation).to({y:r.rotation.y+o},s).start()}if(r?.playerObject&&n?.rotation?.head){let{playerObject:o}=r,a=n.rotation.head.y,l=typeof a=="number"&&Number.isFinite(a)?a:e.yaw,c=typeof l=="number"&&typeof e.yaw=="number"&&Number.isFinite(l)&&Number.isFinite(e.yaw)?v2e(e.yaw,l):0;o.skin.head.rotation.y=c;let d=n.rotation.head.x;o.skin.head.rotation.x=typeof d=="number"&&Number.isFinite(d)?-d:0}}afterAddEntity(e){}beforeEntityAdded(e){let t=this.pendingModelOverrides.get(e.id.toString());if(t){let{parts:n}=t;e.customModel=n.length===1?n[0]:{parts:n},this.pendingModelOverrides.delete(e.id.toString())}}loadedSkinEntityIds=new Set;maybeRenderPlayerSkin(e){let t=this.entities[e];if(e==="player_entity"&&(t=this.playerEntity,e=this.playerEntity?.originalEntity.id),!t||!t.playerObject||!t.visible)return;let n=128,r=this.worldRenderer.getCameraPosition(),s=this.worldRenderer.sceneOrigin.getWorldPosition(t),a=(s?new K(s.x,s.y,s.z):t.position.clone().add(new K(this.worldRenderer.sceneOrigin.x,this.worldRenderer.sceneOrigin.y,this.worldRenderer.sceneOrigin.z))).distanceTo(r);if(a<n&&a<this.worldRenderer.viewDistance*16){if(this.loadedSkinEntityIds.has(String(e)))return;this.updatePlayerSkin(e,t.playerObject.realUsername,t.playerObject.realPlayerUuid,!0,!0)}}playerPerAnimation={};onRemoveEntity(e){this.loadedSkinEntityIds.delete(e.id.toString()),delete this.currentSkinUrls[e.id.toString()],this.motionCache.delete(e.id.toString())}updateMap(e,t){this.cachedMapsImages[e]=t;let n=this.itemFrameMaps[e];if(n&&(n=n.filter(r=>r.parent),this.itemFrameMaps[e]=n,n))for(let r of n)r.material.map=this.loadMap(t),r.material.needsUpdate=!0,r.visible=!0}updateNameTagVisibility(e){let t=this.worldRenderer.playerStateReactive.team,n=e.originalEntity.team,r=n?.nameTagVisibility||"always",s=r==="always"||r==="hideForOwnTeam"&&n?.team!==t?.team||r==="hideForOtherTeams"&&(n?.team===t?.team||t===void 0);e.traverse(o=>{o.name==="nametag"&&(o.visible=s)})}addMapModel(e,t,n){let r=this.cachedMapsImages?.[t],s=null;r&&(s=this.loadMap(r));let o={transparent:!0,alphaTest:.1};s&&(o.map=s);let a=new is(o),l=new je(new _n(1,1),a);l.rotation.set(0,Math.PI,0),e.add(l);let c=!0;e.traverseVisible(d=>{d.name==="geometry_frame"&&(c=!1)}),c?l.position.set(0,0,.499):l.position.set(0,0,.437),l.rotateZ(Math.PI*2-n*Math.PI/2),l.name=`map_${t}`,s||(l.visible=!1),this.itemFrameMaps[t]||(this.itemFrameMaps[t]=[]),this.itemFrameMaps[t].push(l)}loadMap(e){let t=v1(e);return t.needsUpdate=!0,t}addItemModel(e,t,n,r=!1){let s=`bone_${t}item`,o=`custom_item_${t}`;if(e.traverse(l=>{l.name===o&&(l.removeFromParent(),l.additionalCleanup&&l.additionalCleanup())}),!n)return;let a=this.getItemMesh(n,{"minecraft:display_context":"thirdperson"});a?.mesh&&e.traverse(l=>{if(l.name.toLowerCase()===s||l.name===`${t}Arm`){let c=new At;c.additionalCleanup=()=>{a.cleanup&&a.cleanup()};let d=a.mesh;c.rotation.z=-Math.PI/16,a.isBlock?c.rotation.y=Math.PI/4:(d.rotation.z=-Math.PI/4,c.rotation.y=Math.PI/2,c.scale.multiplyScalar(2)),r&&(c.position.y=-8,c.position.z=5,c.position.x=t==="left"?1:-1,c.rotation.x=Math.PI),c.add(d),c.name=o,l.add(c)}})}handleDamageEvent(e,t){let n=this.entities[e]?.children.find(r=>r.name==="mesh");n&&n.traverse(r=>{if(r instanceof je&&r.material.clone){r.material.clone().dispose(),r.material=r.material.clone();let o=r.material.color.clone();r.material.color.set(16711680),new br(r.material.color).to(o,500).start()}})}raycastSceneDebug(){let e=new _a;return e.setFromCamera(new Ue(0,0),this.worldRenderer.camera),e.intersectObjects(this.worldRenderer.scene.children)[0]?.object}updateEntityModel(e,t,n,r){let s=Array.isArray(t)?t:[{modelPath:t,modelType:n,metadata:r}];this.pendingModelOverrides.set(e,{parts:s});let o=this.entities[e];o&&(this.update({...o.originalEntity,delete:!0},{}),this.update(o.originalEntity,{}))}setupPlayerObject(e,t,n){let r=new $1;r.realPlayerUuid=e.uuid??"",r.realUsername=e.username??"",r.position.set(0,16,0),Tk(r),t.add(r);let s=1/16;return t.scale.set(s,s,s),t.rotation.set(0,Math.PI,0),r.animation=new $p,r.animation.isMoving=!1,r}updateEntityEquipment(e,t){if(!e||!t.equipment)return;let n=t.type==="player";if(this.addItemModel(e,n?"right":"left",t.equipment[0],n),this.addItemModel(e,n?"left":"right",t.equipment[1],n),Kp(this.worldRenderer,e,"feet",t.equipment[2]),Kp(this.worldRenderer,e,"legs",t.equipment[3],2),Kp(this.worldRenderer,e,"chest",t.equipment[4]),Kp(this.worldRenderer,e,"head",t.equipment[5]),n&&e.playerObject){let{playerObject:r}=e;r.backEquipment=t.equipment.some(s=>s?.name==="elytra")?"elytra":"cape",r.backEquipment==="elytra"&&this.loadAndApplyCape(t.id,aT),r.cape.map===null&&(r.cape.visible=!1)}}};function w2e(i,e){let t=e?.entitiesByName[i.name];return new Proxy({},{get(n,r,s){if(typeof r!="string"||!t)return;let o=t.metadataKeys?.indexOf(r);return i.metadata?.[o??-1]}})}function O_(i,e,t){if(e.name===i)return w2e(e,t)}function Kp(i,e,t,n,r=1,s=!1){if(!n){uT(e,t);return}let o=n.name.split("_"),a,l=t==="head"&&n.name==="player_head";if(l)if(uT(e,t),n.nbt){let _=N_.default.simplify(n.nbt);try{let b;if(_.SkullOwner?b=_.SkullOwner.Properties.textures[0]?.Value:b=_["minecraft:profile"]?.Properties?.find(y=>y.name==="textures")?.value,b){a=JSON.parse(Buffer.from(b,"base64").toString()).textures?.SKIN?.url;let{skinTexturesProxy:g}=i.worldRendererConfig;g&&(a=a?.replace("http://textures.minecraft.net/",g).replace("https://textures.minecraft.net/",g))}}catch(b){console.error("Error decoding player head texture:",b)}}else a=yi;let c=o[0];if(!a){let _=`${c}_layer_${r}${s?"_overlay":""}`;a=i.resourcesManager.currentResources.customTextures.armor?.textures[_]?.src??m2e[_]}if(!a||!C0[t]){uT(e,t);return}let d=`geometry_armor_${t}${s?"_overlay":""}`,u=e.children.findLast(_=>_.name===d),p;if(u?(p=u.material,N7(a,_=>{_.magFilter=Qe,_.minFilter=Qe,_.flipY=!1,_.wrapS=mo,_.wrapT=mo,p.map=_})):(u=R0(i,a,C0[t]),t==="head"&&(u.children[0].position.y+=.01),u.name=d,p=u.material,l||(p.side=cn)),c==="leather"&&!s){let _=n.nbt?.value?.display?.value?.color?.value;if(_){let b=_>>16&255,y=_>>8&255,g=_&255;p.color.setRGB(b/255,y/255,g/255)}else p.color.setHex(11890001);Kp(i,e,t,n,r,!0)}else p.color.setHex(16777215);let v=new At;v.name=`armor_${t}${s?"_overlay":""}`,v.add(u),e.add(u)}function uT(i,e){for(let t of i.children)(t.name===`geometry_armor_${e}`||t.name===`geometry_armor_${e}_overlay`)&&t.removeFromParent()}var hT=async(i,e)=>{let t;if(!i&&!e)t=await b2e;else{if(i||(i=await h0(e,"skin")),!i)return;let{canvas:l}=await Bo(i);t=new mn(l)}t.magFilter=Qe,t.minFilter=Qe;let n=new nn,r=new Lr,s=!1,o=new je(n,r);o.scale.x=s?3:4,o.scale.y=12,o.scale.z=4,Mqe(n,40,16,s?3:4,12,4),r.map=t,r.needsUpdate=!0;let a=new at;return a.add(o),a.scale.set(.1,.1,.1),o.rotation.z=Math.PI,a};function Aqe(i,e,t,n,r,s,o,a){let l=(R,L,M,k)=>[new Ue(R/o,1-k/a),new Ue(M/o,1-k/a),new Ue(M/o,1-L/a),new Ue(R/o,1-L/a)],c=l(e+s,t,e+n+s,t+s),d=l(e+n+s,t,e+n*2+s,t+s),u=l(e,t+s,e+s,t+s+r),p=l(e+s,t+s,e+n+s,t+s+r),v=l(e+n+s,t+s,e+n+s*2,t+r+s),_=l(e+n+s*2,t+s,e+n*2+s*2,t+r+s),b=i.attributes.uv,y=[v[3],v[2],v[0],v[1]],g=[u[3],u[2],u[0],u[1]],w=[c[3],c[2],c[0],c[1]],x=[d[0],d[1],d[3],d[2]],S=[p[3],p[2],p[0],p[1]],A=[_[3],_[2],_[0],_[1]],I=[];for(let R of[y,g,w,x,S,A])for(let L of R)I.push(L.x,L.y);b.set(new Float32Array(I)),b.needsUpdate=!0}function Mqe(i,e,t,n,r,s){Aqe(i,e,t,n,r,s,64,64)}var S2e={itemRight:{rotation:[0,-90,25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},itemLeft:{rotation:[0,90,-25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},blockRight:{rotation:[0,45,0],translation:[0,0,0],scale:[.4,.4,.4]},blockLeft:{rotation:[0,225,0],translation:[0,0,0],scale:[.4,.4,.4]}},Zp=class{constructor(e,t=!1){this.worldRenderer=e;this.offHand=t;this.initCameraGroup(),this.unsubs.push(Ua(this.worldRenderer.playerStateReactive,"heldItemMain",()=>{this.offHand||this.updateItem()})),this.unsubs.push(Ua(this.worldRenderer.playerStateReactive,"heldItemOff",()=>{this.offHand&&this.updateItem()})),this.config=e.displayOptions.inWorldRenderingConfig,this.offHandDisplay=this.offHand,this.offHand||hT().then(n=>{this.disposed||(this.playerHand=n,this.updateItem())}).then(()=>{if(this.disposed)return;let n=F7(async()=>hT(this.worldRenderer.playerStateReactive.playerSkin,this.worldRenderer.playerStateReactive.onlineMode?this.worldRenderer.playerStateReactive.username:void 0),this.worldRenderer.playerStateReactive,"playerSkin",r=>{r&&(this.playerHand=r,this.updateItem())},r=>{qn(r,!0)});this.unsubs.push(n)})}holdingBlock=void 0;blockSwapAnimation=void 0;cameraGroup=new je;objectOuterGroup=new at;objectInnerGroup=new at;holdingBlockInnerGroup=new at;camera=new Yt(75,1,.1,100);stopUpdate=!1;lastHeldItem;lastHeldItemRenderKey;isSwinging=!1;nextIterStopCallbacks;idleAnimator;ready=!1;lastUpdate=0;playerHand;offHandDisplay=!1;offHandModeLegacy=!1;swingAnimator;config;disposed=!1;unsubs=[];updateItem(){if(!this.ready)return;let e=this.offHand?this.worldRenderer.playerStateReactive.heldItemOff:this.worldRenderer.playerStateReactive.heldItemMain;e?this.setNewItem(e):this.offHand?this.setNewItem():this.setNewItem({type:"hand"})}initCameraGroup(){this.cameraGroup=new je}startSwing(){this.swingAnimator?.startSwing()}stopSwing(){this.swingAnimator?.stopSwing()}render(e,t,n,r){if(!this.lastHeldItem)return;let s=performance.now();this.lastUpdate&&s-this.lastUpdate>50&&this.replaceItemModel(this.lastHeldItem),this.swingAnimator?.isCurrentlySwinging()||this.swingAnimator?.debugParams.animationStage?this.swingAnimator?.update():this.idleAnimator?.update(),this.blockSwapAnimation?.switcher.update();let o=new _r;o.add(this.cameraGroup),this.updateCameraGroup(),o.add(n.clone()),o.add(r.clone());let a=t.getSize(new Ue),l=Math.min(a.width,a.height),c=a.width-l,{offHandDisplay:d}=this;if(d&&(this.cameraGroup.scale.x=-1),t.autoClear=!1,t.clearDepth(),this.offHandDisplay)t.setViewport(0,0,l,l);else{let u=a.width-l;t.setViewport(u,0,l,l)}t.render(o,this.camera),t.setViewport(0,0,a.width,a.height),d&&(this.cameraGroup.scale.x=1)}async playBlockSwapAnimation(e){this.blockSwapAnimation??={switcher:new Xc(()=>({y:this.objectInnerGroup.position.y}),(s,o)=>{s==="y"&&(this.objectInnerGroup.position.y=o)},{y:16})};let t=e,n=this.objectInnerGroup.position.y+this.objectInnerGroup.scale.y*1.5*(t==="appeared"?1:-1),r=!1;return new Promise(s=>{this.blockSwapAnimation.switcher.transitionTo({y:n},t,()=>{r||s(!0)},()=>{r=!0,s(!1)})})}isDifferentItem(e){return this.lastHeldItemRenderKey!==_1(this.worldRenderer,e)}updateCameraGroup(){if(this.stopUpdate)return;let{camera:e}=this;this.cameraGroup.position.copy(e.position),this.cameraGroup.rotation.copy(e.rotation);let t=1,{position:n,scale:r}=this.getHandHeld3d(),s=-n.z,o=this.offHandModeLegacy?-1:1;this.objectOuterGroup.position.set(s*n.x*t*o,s*n.y,-s);let a=r*2.22*.2;this.objectOuterGroup.scale.set(a,a,a)}lastItemModelName;async createItemModel(e){if(this.lastUpdate=performance.now(),!e||e.type==="hand"&&!this.playerHand)return;let t;if(e.type==="item"||e.type==="block"){let r=this.worldRenderer.entities.getItemMesh({...e.fullItem,itemId:e.id},H7(this.worldRenderer),!1,this.lastItemModelName);if(r){let{mesh:s,isBlock:o,modelName:a}=r;o?(t=s,e.type="block"):(s.position.set(.5,.5,.5),t=s,e.type="item"),this.lastItemModelName=a}}else t=this.playerHand;if(!t)return;t.name="holdingBlock";let n=this.getHandHeld3d().rotation;return t.rotation.x=_t.degToRad(n.x),t.rotation.y=_t.degToRad(n.y),t.rotation.z=_t.degToRad(n.z),{model:t,type:e.type}}async replaceItemModel(e){if(this.blockSwapAnimation?.switcher.isTransitioning)return;if(!e){this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0;return}let t=await this.createItemModel(e);t&&(this.holdingBlock?.removeFromParent(),this.holdingBlock=t.model,this.holdingBlockInnerGroup.add(t.model))}testUnknownBlockSwitch(){this.setNewItem({type:"item",name:"minecraft:some-unknown-block",id:0,fullItem:{}})}switchRequest=0;async setNewItem(e){let t=_1(this.worldRenderer,e),n=this.lastHeldItemRenderKey!==t;if(this.lastHeldItem=e,!n)return;this.lastHeldItemRenderKey=t,this.lastItemModelName=void 0;let r=++this.switchRequest,s=!1;if(this.holdingBlock){if(s=!0,!await this.playBlockSwapAnimation("disappeared"))return;this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0}if(!e){this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0,this.blockSwapAnimation=void 0;return}if(r!==this.switchRequest)return;let o=await this.createItemModel(e);if(!o||r!==this.switchRequest)return;let a=new at;this.holdingBlockInnerGroup.removeFromParent(),this.holdingBlockInnerGroup=new at,this.holdingBlockInnerGroup.add(o.model),a.add(this.holdingBlockInnerGroup),this.holdingBlock=o.model,this.objectInnerGroup=new at,this.objectInnerGroup.add(a),this.objectInnerGroup.position.set(-.5,-.5,-.5),s&&(this.objectInnerGroup.position.y-=this.objectInnerGroup.scale.y*1.5),Object.assign(a.position,{x:.5,y:.5,z:.5}),this.objectOuterGroup=new at,this.objectOuterGroup.add(this.objectInnerGroup),this.cameraGroup.add(this.objectOuterGroup);let l=this.getHandHeld3d().rotation;this.objectOuterGroup.rotation.y=_t.degToRad(l.yOuter),s&&await this.playBlockSwapAnimation("appeared"),this.swingAnimator??=new pT(this.holdingBlockInnerGroup),this.swingAnimator.setHandMesh(this.holdingBlockInnerGroup),this.swingAnimator.type=o.type,this.config.viewBobbing&&(this.idleAnimator=new mT(this.holdingBlockInnerGroup,this.worldRenderer.playerStateReactive))}getHandHeld3d(){let e=this.lastHeldItem?.type??"hand",t=this.offHandModeLegacy?"Left":"Right",n=.8*1.15,r={x:.4,y:-.7,z:-.45},s={x:-32.4,y:42.8,z:-41.3,yOuter:0};if(e==="item"){let o=S2e[`item${t}`];r={x:-.05,y:-.7,z:-.45},s={x:o.rotation[0],y:o.rotation[1],z:o.rotation[2],yOuter:0},n=o.scale[0]*1.15}else if(e==="block"){let o=S2e[`block${t}`];r={x:.4,y:-.7,z:-.45},s={x:o.rotation[0],y:o.rotation[1],z:o.rotation[2],yOuter:0},n=o.scale[0]*1.15}return{rotation:s,position:r,scale:n}}dispose(){this.disposed=!0,this.ready=!1,this.unsubs.forEach(e=>e()),this.unsubs=[],this.idleAnimator?.destroy(),this.idleAnimator=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.blockSwapAnimation?.switcher.forceFinish(),this.blockSwapAnimation=void 0,qn(this.cameraGroup,!0),qn(this.objectOuterGroup,!0),qn(this.objectInnerGroup,!0),qn(this.holdingBlockInnerGroup,!0),this.holdingBlock=void 0,this.playerHand&&(qn(this.playerHand,!0),this.playerHand=void 0)}},mT=class{constructor(e,t){this.handMesh=e;this.playerState=t;this.handMesh=e,this.globalTime=0,this.currentState="NOT_MOVING",this.targetState="NOT_MOVING",this.defaultPosition={x:e.position.x,y:e.position.y,z:e.position.z,rotationX:e.rotation.x,rotationY:e.rotation.y,rotationZ:e.rotation.z},this.stateSwitcher=new Xc(()=>({x:this.handMesh.position.x,y:this.handMesh.position.y,z:this.handMesh.position.z,rotationX:this.handMesh.rotation.x,rotationY:this.handMesh.rotation.y,rotationZ:this.handMesh.rotation.z}),(n,r)=>{switch(n){case"x":this.handMesh.position.x=r;break;case"y":this.handMesh.position.y=r;break;case"z":this.handMesh.position.z=r;break;case"rotationX":this.handMesh.rotation.x=r;break;case"rotationY":this.handMesh.rotation.y=r;break;case"rotationZ":this.handMesh.rotation.z=r;break}},{x:2,y:2,z:2,rotation:Math.PI}),this.debugGui=new za("idle_animator",this.debugParams)}globalTime=0;lastTime=0;currentState;targetState;defaultPosition;idleOffset={y:0,rotationZ:0};tween=new Vf;idleTween=null;stateSwitcher;debugParams={walkingSpeed:8,sprintingSpeed:16,walkingAmplitude:{x:1/30,y:1/10,rotationZ:.25},sprintingAmplitude:{x:1/30,y:1/10,rotationZ:.4}};debugGui;startIdleAnimation(){this.idleTween&&this.idleTween.stop(),this.idleOffset.y=this.handMesh.position.y-this.defaultPosition.y,this.idleOffset.rotationZ=this.handMesh.rotation.z-this.defaultPosition.rotationZ,this.idleTween=new br(this.idleOffset,this.tween).to({y:.05,rotationZ:.05},3e3).easing(ar.Sinusoidal.InOut).yoyo(!0).repeat(1/0).start()}stopIdleAnimation(){this.idleTween&&(this.idleTween.stop(),this.idleOffset.y=0,this.idleOffset.rotationZ=0)}getStateTransform(e,t){switch(e){case"NOT_MOVING":case"SNEAKING":return{x:this.defaultPosition.x,y:this.defaultPosition.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ};case"WALKING":case"SPRINTING":{let n=e==="SPRINTING"?this.debugParams.sprintingSpeed:this.debugParams.walkingSpeed,r=e==="SPRINTING"?this.debugParams.sprintingAmplitude:this.debugParams.walkingAmplitude;return{x:this.defaultPosition.x+Math.sin(t*n)*r.x,y:this.defaultPosition.y-Math.abs(Math.cos(t*n))*r.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ}}}}setState(e){if(e===this.targetState)return;this.targetState=e;let t=!1;if(this.currentState!==e){if(this.stopIdleAnimation(),!t){let n=this.getStateTransform(e,this.globalTime);this.stateSwitcher.transitionTo(n,e)}this.currentState=e}}updated=!1;update(){this.stateSwitcher.update();let e=performance.now(),t=(e-this.lastTime)/1e3;if(this.lastTime=e,!this.stateSwitcher.isTransitioning)switch(this.currentState){case"NOT_MOVING":case"SNEAKING":this.globalTime=Math.PI/4;break;case"SPRINTING":case"WALKING":this.globalTime+=t;break}if(this.playerState){let n=this.playerState.movementState;n!==this.targetState&&this.setState(n)}if(!this.stateSwitcher.isTransitioning&&(this.currentState==="NOT_MOVING"||this.currentState==="SNEAKING")&&(this.idleTween?.isPlaying()||this.startIdleAnimation(),this.tween.update(),this.handMesh.position.y=this.defaultPosition.y+this.idleOffset.y,this.handMesh.rotation.z=this.defaultPosition.rotationZ+this.idleOffset.rotationZ),!this.stateSwitcher.isTransitioning&&(this.currentState==="WALKING"||this.currentState==="SPRINTING")){let n=this.getStateTransform(this.currentState,this.globalTime);Object.assign(this.handMesh.position,n),Object.assign(this.handMesh.rotation,{x:n.rotationX,y:n.rotationY,z:n.rotationZ})}}getCurrentState(){return this.currentState}destroy(){this.stopIdleAnimation(),this.stateSwitcher.forceFinish()}},pT=class{constructor(e){this.handMesh=e;this.handMesh=e,this.originalRotation=e.rotation.clone(),this.originalPosition=e.position.clone(),this.originalScale=e.scale.clone(),this.debugGui=new za("hand_animator",this.debugParams,void 0,{animationStage:{min:0,max:1,step:.01},itemSwingXPosScale:{min:-2,max:2,step:.1},itemSwingYPosScale:{min:-2,max:2,step:.1},itemSwingZPosScale:{min:-2,max:2,step:.1},itemHeightScale:{min:-2,max:2,step:.1},itemPreswingRotY:{min:-180,max:180,step:5},itemSwingXRotAmount:{min:-180,max:180,step:5},itemSwingYRotAmount:{min:-180,max:180,step:5},itemSwingZRotAmount:{min:-180,max:180,step:5},armSwingXPosScale:{min:-2,max:2,step:.1},armSwingYPosScale:{min:-2,max:2,step:.1},armSwingZPosScale:{min:-2,max:2,step:.1},armSwingYRotAmount:{min:-180,max:180,step:5},armSwingZRotAmount:{min:-180,max:180,step:5},armHeightScale:{min:-2,max:2,step:.1}})}PI=Math.PI;animationTimer=0;lastTime=0;isAnimating=!1;stopRequested=!1;originalRotation;originalPosition;originalScale;debugParams={animationTime:250,animationStage:0,useClassicSwing:!0,itemSwingXPosScale:-.8,itemSwingYPosScale:.2,itemSwingZPosScale:-.2,itemHeightScale:-.6,itemPreswingRotY:45,itemSwingXRotAmount:-30,itemSwingYRotAmount:-35,itemSwingZRotAmount:-5,armSwingXPosScale:-.3,armSwingYPosScale:.4,armSwingZPosScale:-.4,armSwingYRotAmount:70,armSwingZRotAmount:-20,armHeightScale:-.6};debugGui;type="hand";setHandMesh(e){this.handMesh=e,this.originalRotation.copy(e.rotation),this.originalPosition.copy(e.position),this.originalScale.copy(e.scale)}update(){if(!this.isAnimating&&!this.debugParams.animationStage){this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}let e=performance.now(),t=(e-this.lastTime)/1e3;this.lastTime=e,this.animationTimer+=t*1e3;let n=this.debugParams.animationStage||Math.min(this.animationTimer/this.debugParams.animationTime,1);if(n>=1){if(this.stopRequested){this.isAnimating=!1,this.stopRequested=!1,this.animationTimer=0,this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}this.animationTimer=0;return}this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);let r=n,s=Math.sqrt(r),o=Math.sin(r*this.PI),a=Math.sin(s*this.PI);if(this.type==="hand"){let l=this.debugParams.armSwingXPosScale*a,c=this.debugParams.armSwingYPosScale*Math.sin(s*this.PI*2),d=this.debugParams.armSwingZPosScale*o;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.armHeightScale*r,this.handMesh.position.z+=d,this.handMesh.rotation.y+=_t.degToRad(this.debugParams.armSwingYRotAmount*a),this.handMesh.rotation.z+=_t.degToRad(this.debugParams.armSwingZRotAmount*o)}else{let l=this.debugParams.itemSwingXPosScale*a,c=this.debugParams.itemSwingYPosScale*Math.sin(s*this.PI*2),d=this.debugParams.itemSwingZPosScale*o;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.itemHeightScale*r,this.handMesh.position.z+=d,this.handMesh.rotation.y+=_t.degToRad(this.debugParams.itemPreswingRotY),this.handMesh.rotation.x+=_t.degToRad(this.debugParams.itemSwingXRotAmount*o),this.handMesh.rotation.y+=_t.degToRad(this.debugParams.itemSwingYRotAmount*a),this.handMesh.rotation.z+=_t.degToRad(this.debugParams.itemSwingZRotAmount*o)}}startSwing(){this.stopRequested=!1,!this.isAnimating&&(this.isAnimating=!0,this.animationTimer=0,this.lastTime=performance.now())}stopSwing(){this.isAnimating&&(this.stopRequested=!0)}isCurrentlySwinging(){return this.isAnimating}};function Qp(i,e=!1){return i.displayOptions.inWorldRenderingConfig.handRenderer==="legacy"?new Zp(i,e):new Ip(i,e)}f();m();h();yt();var E2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAALUlEQVR42mP4//8/IyWYYdSAwW6Ara3tf4oMmD179n9ChhD0AsiQ0Wgc7AYAAOqH+zNQ3r9kAAAAAElFTkSuQmCC";var A2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAOklEQVR42mP4//8/IyWYYdQA3AbY2tr+H1gDZs+e/R9mCD7D8IYBzBAQTXYgEvIKQQPw2T6aEqlkAADEA/W3ycLXvwAAAABJRU5ErkJggg==";var M2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVR42mP4//8/IyWYYRgbYGtr+39wGQDiYzMUpwGzZ8+GawDRID4IkxSIMEOwaSQ6FgiFBW0NIOR8osJgBOQFALo37sVTOo/LAAAAAElFTkSuQmCC";var k2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWElEQVR42mP4//8/IyWYYXAbYGtr+59sA0CaZ8+eTZkBhNg4DQApQlYIcglMDN1VWA0AKYJpQvYONi/hDUSYIfjCgmA0EooJ2hmAK9CINgBXoA2xvEAMBgBGPud3dYZtOQAAAABJRU5ErkJggg==";var T2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYklEQVR42r1TQQrAMAxyD8tL89iMHgQJoQxHewi0UsWYFFX1/CkcF4iIsgUWOTM9ASV3F3rHF+v9rK4wEVnEFoFYbwmTbRZFFN9m0B9QZBfk2THaAhqktQdTkHYL9iZe+40vs7nda+BuVOMAAAAASUVORK5CYII=";var I2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcElEQVR42rWTWwpAIQhEbWGu1MUaXRgQcXpyP8SIPI1jibu3l5DfAKrqyFgfAczsKxx5xJUCFGYFUZXMpOe9CAa8BOS+0U5UVbYQ6Siqbi0BFT0auTSRHZqNkE6BGXgEYKYtAczIbQAz8ukzXT3l3egz49IXvXQCVAAAAABJRU5ErkJggg==";var R2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAeElEQVQ4jaWSQQ4AIQgD9WG8tI/tnkgaUgmuBw8YHcqERXK/nOUuI4JPAABMSESwA1qAQgAQwBygnfNjTaCpWoBzUlNZQJ07x9FUdgSlV5FaW4Cjq8isW8BJ2GgPtEuVdr0HKvLXHjiRI0An8jTKqo9dF000cnBzPgKuxXtbq/m1AAAAAElFTkSuQmCC";var C2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAhUlEQVR42qWTSRKAMAgE8WF5KY/FygEL2yEp9cAhCz0wJBYRx58wbowxYsZngLvHjITsgNYpJySBrPIBUMqZSHhdSw+oQlgVa01U7VRQ7huTk67aUWZaVyaNZFsSQBCTVBW3KahLyo/lQ6KR1Y+2BTUyGqke1AXoxsSzpYlU3FW0/Exv1ie0hq53Bf15aAAAAABJRU5ErkJggg==";var P2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAmklEQVR42o2SYQ6FMAiDeQfbSXdYXjSpqd869QeZQiilpbr7l2KM0cc75+xUV77YpGCjAPUqitMU3uCAXrsAlPSCcgJMbG4M0mQ1Etz/i0KlXQnmwyqpv1uH4h7fiws7ISneTYNEk0ImCxcAArGJrE4AXhypPtl7AqTdeJG8k3gHb0L6QfmK9WQTa59cSFdHRssKFHHngteV/wPDepaHIu0QVAAAAABJRU5ErkJggg==";var L2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVR42n2Tyw3AIAxD3cGYlGFTUSmV+2o4IEEAf2JQVV1rjDGq576ec5avWVdfWIW12aMPEJBEImoPv+CAvvcCODsVNWBS8wA4A5ndv1/ytciQvBLMyeTSHD3ZYXPXXH7Y0ZMdJvCxQJls5O6tKHlPPWGEfU58WZR6ive1kKSleFNC2kXGRnrcDqhTTOmPeP3pAZnTq6Oin4X0oXbfnNZu626Io6lqGCwAAAAASUVORK5CYII=";var V_=class{constructor(e){this.worldRenderer=e;let t=[E2e,A2e,M2e,k2e,T2e,I2e,R2e,C2e,P2e,L2e];for(let r=0;r<10;r++)p1(t[r]).then(s=>{s.magFilter=Qe,s.minFilter=Qe,this.breakTextures.push(s)});let n=new st({transparent:!0,blending:Gh,alphaTest:.5});this.blockBreakMesh=new je(new nn(1,1,1),n),this.blockBreakMesh.visible=!1,this.blockBreakMesh.renderOrder=999,this.blockBreakMesh.name="blockBreakMesh",this.worldRenderer.sceneOrigin.addAndTrack(this.blockBreakMesh),this.worldRenderer.onReactivePlayerStateUpdated("gameMode",()=>{this.updateLineMaterial()}),setTimeout(()=>{this.updateLineMaterial(),this.interactionLines&&this.setHighlightCursorBlock(this.interactionLines.blockPos,this.interactionLines.shapePositions,!0)})}_cursorLinesHidden=!1;get cursorLinesHidden(){return this._cursorLinesHidden}set cursorLinesHidden(e){this.interactionLines&&(this.interactionLines.mesh.visible=!e),this._cursorLinesHidden=e}cursorLineMaterial;interactionLines=null;prevColor;blockBreakMesh;breakTextures=[];updateLineMaterial(){let e=this.worldRenderer.playerStateReactive.gameMode==="creative",t=this.worldRenderer.renderer.getPixelRatio();this.cursorLineMaterial&&this.cursorLineMaterial.dispose(),this.cursorLineMaterial=new fd({color:(()=>{switch(this.worldRenderer.worldRendererConfig.highlightBlockColor){case"blue":return 4227327;case"classic":return 0;default:return e?4227327:0}})(),linewidth:Math.max(t*.7,1)*2}),this.prevColor=this.worldRenderer.worldRendererConfig.highlightBlockColor}updateBreakAnimation(e,t,n){if(this.hideBreakAnimation(),t===null||!e||!n)return;let{position:r,width:s,height:o,depth:a}=n,l=new ut(r.x,r.y,r.z);this.blockBreakMesh.scale.set(s*1.001,o*1.001,a*1.001),l.add(new ut(e.x,e.y,e.z)),this.blockBreakMesh.position.set(l.x,l.y,l.z),this.blockBreakMesh.visible=!0,this.blockBreakMesh.material.map=this.breakTextures[t]??this.breakTextures.at(-1),this.blockBreakMesh.material.needsUpdate=!0}hideBreakAnimation(){this.blockBreakMesh&&(this.blockBreakMesh.visible=!1)}updateDisplay(){if(this.cursorLineMaterial){let{renderer:e}=this.worldRenderer;this.cursorLineMaterial.resolution.set(e.domElement.width,e.domElement.height),this.cursorLineMaterial.dashOffset=performance.now()/750}}setHighlightCursorBlock(e,t,n=!1){if(e&&this.interactionLines&&e.equals(this.interactionLines.blockPos)&&Dqe(t??[],this.interactionLines.shapePositions??[])&&!n||(this.interactionLines!==null&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.interactionLines.mesh),this.interactionLines=null),e===null))return;let r=new at;for(let{position:s,width:o,height:a,depth:l}of t??[]){let c=new ut(s.x,s.y,s.z),d=[1.0001*o,1.0001*a,1.0001*l],u=new nn(...d),p=new ud().fromEdgesGeometry(new Cl(u)),v=new Xp(p,this.cursorLineMaterial);v.position.set(c.x,c.y,c.z),v.computeLineDistances(),r.add(v)}this.worldRenderer.sceneOrigin.addAndTrack(r),r.position.set(e.x,e.y,e.z),r.visible=!this.cursorLinesHidden,this.interactionLines={blockPos:e,mesh:r,shapePositions:t}}render(){this.prevColor!==this.worldRenderer.worldRendererConfig.highlightBlockColor&&this.updateLineMaterial(),this.updateDisplay()}},Dqe=(i,e)=>{if(i.length!==e.length)return!1;for(let[t,n]of i.entries())if(n!==e[t])return!1;return!0};f();m();h();f();m();h();var Fqe=Yr($m(),1),vT=Yr(_i(),1);f();m();h();var B2e=(i,e,t)=>({...e,"minecraft:date":new Date});f();m();h();var Uqe=(i,e)=>{let t=(i.getMonth()+1).toString().padStart(2,"0"),n=i.getDate().toString().padStart(2,"0");return e.replace("MM",t).replace("dd",n)},Vqe=(i,e,t,n)=>{switch(e){case"daytime":return n["minecraft:time"];case"random":return Math.random();default:let r=n[i];return typeof r=="number"?r:void 0}},eh=(i,e)=>{switch(i.type){case"minecraft:model":return{model:i.model,...i.tints&&{tints:i.tints}};case"minecraft:empty":return{model:"minecraft:builtin/empty"};case"minecraft:select":{let t=e[i.property],n=t;i.pattern&&(i.property==="minecraft:local_time"||i.property==="minecraft:date")&&t&&(n=Uqe(t,i.pattern));let s=i.cases.find(a=>Array.isArray(a.when)?a.when.some(l=>l===n):a.when===n)?.model??i.fallback;if(!s)throw new Error(`No matching case for ${i.property}=${n}`);let o=eh(s,e);return{...o,watchProperties:[...o.watchProperties||[],{property:i.property,type:"select",currentValue:n}]}}case"minecraft:range_dispatch":{let t=Vqe(i.property,i.source,i.target,e);if(typeof t!="number")return eh(i.fallback??i.entries[0].model,e);let n=i.scale?t*i.scale:t,s=i.entries.sort((a,l)=>l.threshold-a.threshold).find(a=>n>=a.threshold)?.model??i.fallback,o=eh(s,e);return{...o,watchProperties:[...o.watchProperties||[],{property:i.property,type:"range",currentValue:t,source:i.source,...i.target&&{target:i.target}}]}}case"minecraft:condition":{let t=e[i.property],n=t?i.on_true:i.on_false,r=eh(n,e);return{...r,watchProperties:[...r.watchProperties||[],{property:i.property,type:"condition",currentValue:t}]}}case"minecraft:composite":{for(let t of i.models)try{return eh(t,e)}catch{continue}throw new Error("No resolvable model found in composite")}case"minecraft:special":return{model:"minecraft:special",special:i.model};default:throw new Error(`Unknown model type: ${i.type}`)}},O2e=(i,e)=>{let{version:t,name:n,properties:r}=e;if(r.use_duration_ms!==void 0){let o=Math.floor(r.use_duration_ms/50);r["minecraft:use_duration"]=o}let s=i.get(t,n);if(s)try{return eh(s.model,r)}catch(o){console.warn(`Error resolving model for ${n} in version ${t}:`,o);return}};var zqe=(i,e)=>{let t,n,r=i.name;r.includes(":")||(r=`minecraft:${r}`);let s=e.currentResources?.customItemModelNames[r];if(i.components){let o=new Map;for(let d of i.components)o.set(d.type,d);let a=o.get("custom_name")||o.get("item_name");a&&(t=typeof a.data=="string"?a.data:vT.default.simplify(a.data));let l=o.get("item_model");if(l&&(n=l.data),s){let d=o.get("custom_model_data");if(d?.data){let u;typeof d.data=="number"?u=d.data:typeof d.data=="object"&&"floats"in d.data&&Array.isArray(d.data.floats)&&d.data.floats.length>0&&(u=d.data.floats[0]),u&&s[u]&&(n=s[u])}}let c=o.get("lore");c&&(t??=i.displayName??i.name,t+=`
28781
+ `),u=0;for(let v of d){let _=a.measureText(v).width+c*2;_>u&&(u=_)}if(s.width=u,s.height=(l+c)*d.length,a.fillStyle=e,a.fillRect(0,0,s.width,s.height),a.globalAlpha=t/255,!!kA(i,o,s,l,"white",-c+l))return a.globalAlpha=1,s}globalThis.getUsernameTexture=x2e;var D_=(i,e,t,n)=>{for(let l of t.children)l.name==="nametag"&&l.removeFromParent();if(i.username===void 0||i.username===null||(typeof i.username=="string"?i.username:new((0,fT.default)(n))(i.username).toString()).startsWith("EMPTY"))return;let s=x2e(i,e,n);if(!s)return;let o=new Gt(s);o.needsUpdate=!0;let a;if(i.nameTagFixed){let l=new _n,c=new st({map:o});c.transparent=!0,a=new je(l,c),a.rotation.set(i.pitch,_t.degToRad(i.yaw+180),0),a.position.y+=i.height+.3}else{let l=new ns({map:o});a=new Oi(l),a.position.y+=i.height+.6}return a.renderOrder=1e3,a.scale.set(s.width*.005,s.height*.005,1),i.nameTagRotationRight&&a.applyQuaternion(i.nameTagRotationRight),i.nameTagScale&&a.scale.multiply(i.nameTagScale),i.nameTagRotationLeft&&a.applyQuaternion(i.nameTagRotationLeft),i.nameTagTranslation&&a.position.add(i.nameTagTranslation),a.name="nametag",t.add(a),a},g2e={},Sqe=i=>i.charAt(0)===i.charAt(0).toUpperCase();function _2e(i){if(i!=null){if(Array.isArray(i))return i;if(typeof i=="object"){let e=i,t=Object.keys(e).filter(n=>/^\d+$/.test(n)).map(Number).sort((n,r)=>n-r);if(t.length&&t[0]===0&&t.every((n,r)=>n===r))return t.map(n=>e[String(n)])}}}function Eqe(i,e,t,n,r){if(e.name)try{let c=(Sqe(e.name)?Mk(e.name):e.name).toLowerCase(),d=new tl("1.16.4",c,t,r);if(d.mesh)return D_(e,n,d.mesh,t.version),d.mesh}catch(c){reportError?.(c)}if(!i||!(0,y2e.isEntityAttackable)(i,e))return;let s=new nn(e.width,e.height,e.width);s.translate(0,e.height/2,0);let o=new st({color:16711935}),a=new je(s,o);return(g2e[e.name]=(g2e[e.name]||0)+1)<6&&D_({username:e.name,height:e.height},n,a,t.version),a}var U_=class{constructor(e,t){this.worldRenderer=e;this.mcData=t;this.debugMode="none",this.onSkinUpdate=()=>{},this.watchResourcesUpdates()}entities={};playerEntity=null;entitiesOptions={fontFamily:"mojangles"};debugMode;onSkinUpdate;clock=new Rs;currentlyRendering=!0;cachedMapsImages={};itemFrameMaps={};pendingModelOverrides=new Map;motionCache=new Map;_wasThirdPerson=!1;_tpBodyYaw=0;_tpHasBodyYaw=!1;updateAutoWalkFlags(e,t,n,r){if(!t.playerObject?.animation)return;let s=t.playerObject.animation;if(n<=0)return;let o=r??t.position,a=this.motionCache.get(e);if(!a){this.motionCache.set(e,{pos:o.clone(),speed:0}),s.isMoving=!1,s.isRunning=!1,s.moveAmount=0,s.runAmount=0;return}let l=o.x-a.pos.x,c=o.z-a.pos.z;a.pos.copy(o);let d=Math.hypot(l,c)/Math.max(n,1e-6),u=1-Math.exp(-n*12);a.speed+=(d-a.speed)*u;let p=a.speed,v=(S,A,I)=>{let R=cT((I-S)/(A-S));return R*R*(3-2*R)},_=.08,b=.6,y=4.3,g=5.6,w=v(_,b,p),x=v(y,g,p);s.moveAmount=w,s.runAmount=x,s.isMoving=w>.15,s.isRunning=x>.55}getLocalSneak(){let e=this.worldRenderer.playerStateReactive;return e?.movementState==="SNEAKING"||e?.movementState==="CROUCHING"||!!e?.isSneaking||!!e?.sneaking||!!e?.isCrouching||!!e?.crouching||!!e?.controls?.sneak||!!e?.controlState?.sneak}updateThirdPersonHeadAndBody(e,t){let n=e.playerObject?.animation,r=this.worldRenderer.cameraShake.getBaseRotation(),s=r.yaw,o=r.pitch,a=cT(n?.moveAmount??(n?.isMoving?1:0)),l=cT(n?.runAmount??(n?.isRunning?1:0)),c=a>.15;if(this._tpHasBodyYaw||(this._tpHasBodyYaw=!0,this._tpBodyYaw=s),c){let _=1-Math.exp(-t*(18+10*l));this._tpBodyYaw=this._tpBodyYaw+Q1(s-this._tpBodyYaw)*_,e.rotation.set(0,this._tpBodyYaw,0);let b=(25-8*l)*Math.PI/180,y=dT(Q1(s-this._tpBodyYaw),-b,b);n&&"lookYaw"in n&&(n.lookYaw=y),n&&"lookPitch"in n&&(n.lookPitch=-o);return}let d=85*Math.PI/180,u=55*Math.PI/180,p=Q1(s-this._tpBodyYaw);p=dT(p,-d,d);let v=Math.abs(p)-u;if(v>0){let _=v/(d-u),b=s-Math.sign(p)*u,y=1-Math.exp(-t*(6+10*_));this._tpBodyYaw=this._tpBodyYaw+Q1(b-this._tpBodyYaw)*y,p=Q1(s-this._tpBodyYaw),p=dT(p,-d,d)}else{let _=1-Math.exp(-t*5);this._tpBodyYaw=this._tpBodyYaw+Q1(s-this._tpBodyYaw)*(_*.15)}e.rotation.set(0,this._tpBodyYaw,0),n&&"lookYaw"in n&&(n.lookYaw=p),n&&"lookPitch"in n&&(n.lookPitch=-o)}get entitiesByName(){let e={};for(let t of Object.values(this.entities))t.realName&&(e[t.realName]=e[t.realName]||[],e[t.realName].push(t));return e}get entitiesRenderingCount(){return Object.values(this.entities).filter(e=>e.visible).length}getDebugString(){let e=Object.keys(this.entities).length,t=this.entitiesRenderingCount,n=Object.values(this.entities).filter(s=>s.playerObject),r=n.filter(s=>s.visible);return`${t}/${e} ${r.length}/${n.length}`}handlePlayerEntity(e){if(!this.playerEntity){let t=new at;t.originalEntity={...e,name:"player"};let n=new at,r=this.setupPlayerObject(e,n,{});t.playerObject=r,t.add(n),t.name="player_entity",this.playerEntity=t,this.worldRenderer.scene.add(t),this.updatePlayerSkin(e.id,e.username,e.uuid??void 0,yi)}this.playerEntity.originalEntity={...e,name:"player"},e.position&&(this.worldRenderer.sceneOrigin.getWorldPosition(this.playerEntity)||this.worldRenderer.sceneOrigin.track(this.playerEntity),this.playerEntity.position.set(e.position.x,e.position.y,e.position.z)),e.yaw!==void 0&&(this.playerEntity.rotation.y=e.yaw),this.updateEntityEquipment(this.playerEntity,e)}clear(){for(let e of Object.values(this.entities))this.worldRenderer.sceneOrigin.removeAndUntrack(e),qn(e);this.entities={},this.currentSkinUrls={},this.motionCache.clear(),this._wasThirdPerson=!1,this._tpHasBodyYaw=!1,this.playerEntity&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.playerEntity),qn(this.playerEntity),this.playerEntity=null)}reloadEntities(){for(let e of Object.values(this.entities))this.update({...e.originalEntity,delete:!0},{}),this.update(e.originalEntity,{})}watchResourcesUpdates(){this.worldRenderer.resourcesManager.on("assetsTexturesUpdated",()=>this.reloadEntities()),this.worldRenderer.resourcesManager.on("assetsInventoryReady",()=>this.reloadEntities())}setDebugMode(e,t=null){this.debugMode=e;for(let n of t?[t]:Object.values(this.entities)){let r=n.children.find(s=>s.name==="debug");r.visible=!1,this.debugMode==="basic"&&(r.visible=!0)}}setRendering(e,t=null){this.currentlyRendering=e;for(let n of t?[t]:Object.values(this.entities))e?this.worldRenderer.scene.children.includes(n)||this.worldRenderer.scene.add(n):this.worldRenderer.scene.remove(n)}playEntityModelAnimation(e,t,n=!1){let r=this.entities[e];r&&r.traverse(s=>{s instanceof tl&&s.playAnimation(t,n)})}render(){let e=this.worldRenderer.worldRendererConfig.renderEntities;e!==this.currentlyRendering&&this.setRendering(e);let t=this.clock.getDelta(),n=Math.min(t,1/30),r=this.worldRenderer.viewerChunkPosition,s=10*10,o=this.worldRenderer.playerStateUtils.isThirdPerson();if(o!==this._wasThirdPerson){this._wasThirdPerson=o;let a=String(this.playerEntity?.originalEntity.id??"player_entity");this.motionCache.delete(a);let l=this.playerEntity?.playerObject?.animation;l?.resetLocomotion&&l.resetLocomotion(),this._tpHasBodyYaw=!1}for(let[a,l]of[...Object.entries(this.entities),["player_entity",this.playerEntity]]){if(!l)continue;let c=a==="player_entity",d=String(c?this.playerEntity?.originalEntity.id??"player_entity":a);if(c)if(l.visible=o,o){let p=this.worldRenderer.playerStateReactive.eyeHeight;l.position.set(this.worldRenderer.cameraWorldPos.x,this.worldRenderer.cameraWorldPos.y-p,this.worldRenderer.cameraWorldPos.z);let v=this.worldRenderer.playerStateReactive.position;if(v&&typeof v.x=="number")this.updateAutoWalkFlags(d,l,t,new K(v.x,v.y,v.z));else{let _=this.worldRenderer.sceneOrigin.getWorldPosition(l);this.updateAutoWalkFlags(d,l,t,_?new K(_.x,_.y,_.z):l.position)}this.updateThirdPersonHeadAndBody(l,n)}else{let p=this.worldRenderer.sceneOrigin.getWorldPosition(l);this.updateAutoWalkFlags(d,l,t,p?new K(p.x,p.y,p.z):l.position)}else{let p=this.worldRenderer.sceneOrigin.getWorldPosition(l);this.updateAutoWalkFlags(d,l,t,p?new K(p.x,p.y,p.z):l.position)}let{playerObject:u}=l;if(u?.animation){let p=u.animation,_=(Number(l.originalEntity?.metadata?.[0]??0)&2)!==0,b=this.getLocalSneak();"isCrouched"in p&&(p.isCrouched=c?b:_),u.animation.update(u,n)}if(l.traverse(p=>{p instanceof tl&&p.update(n)}),!c&&r&&l.position){let p=l.position.x-r.x,v=l.position.y-r.y,_=l.position.z-r.z,b=p*p+v*v+_*_;l.visible=!!(b<s||this.worldRenderer.shouldObjectVisible(l)),this.maybeRenderPlayerSkin(a)}l.visible&&this.syncArmorPositions(l)}}syncArmorPositions(e){e.playerObject&&e.traverse(t=>{if(!t.name.startsWith("geometry_armor_"))return;let{skin:n}=e.playerObject;switch(t.name){case"geometry_armor_head":t.children[0]?.children[0]&&t.children[0].children[0].rotation.set(-n.head.rotation.x,n.head.rotation.y,n.head.rotation.z,n.head.rotation.order);break;case"geometry_armor_legs":t.children[0]&&(t.children[0].children[2]&&t.children[0].children[2].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,n.leftLeg.rotation.z,n.leftLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order));break;case"geometry_armor_feet":t.children[0]&&(t.children[0].children[0]&&t.children[0].children[0].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,-n.leftLeg.rotation.z,n.leftLeg.rotation.order));break}})}getPlayerObject(e){return this.playerEntity?.originalEntity.id===e?this.playerEntity?.playerObject:this.entities[e]?.playerObject}uuidPerSkinUrlsCache={};currentSkinUrls={};isCanvasBlank(e){return!e.getContext("2d")?.getImageData(0,0,e.width,e.height).data.some(t=>t!==0)}async updatePlayerSkin(e,t,n,r,s=void 0){r!==yi&&this.loadedSkinEntityIds.add(String(e)),n&&((typeof r=="string"||typeof s=="string")&&(this.uuidPerSkinUrlsCache[n]={}),typeof r=="string"&&(this.uuidPerSkinUrlsCache[n].skinUrl=r),typeof s=="string"&&(this.uuidPerSkinUrlsCache[n].capeUrl=s),r===!0&&(r=this.uuidPerSkinUrlsCache[n]?.skinUrl??r),s??=this.uuidPerSkinUrlsCache[n]?.capeUrl);let a=this.getPlayerObject(e);if(!a)return;if(r===!0){if(!t)return;let c=await h0(t,"skin");if(!this.getPlayerObject(e)||!c)return;r=c}if(typeof r!="string")throw new Error("Invalid skin url");if(this.currentSkinUrls[String(e)]===r){if(s){if(s===!0&&t){let c=await h0(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}return}r!==yi&&(this.currentSkinUrls[String(e)]=r);let l=this.worldRenderer.worldRendererConfig.renderEars||t==="deadmau5";this.loadAndApplySkin(e,r,l).then(async()=>{if(s){if(s===!0&&t){let c=await h0(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}}),a.cape.visible=!1,s||(a.backEquipment=null,a.elytra.map=null,a.cape.map&&a.cape.map.dispose(),a.cape.map=null)}async loadAndApplySkin(e,t,n){let r=this.getPlayerObject(e);if(r)try{let s;if(r=this.getPlayerObject(e),!r)return;let o,a;if(t===yi){let c=await Bo(yi);s=c.image,o=new mn(c.canvas),a=c.canvas}else{let{canvas:c,image:d}=await Bo(t);s=d,o=new mn(c),a=c}o.magFilter=Qe,o.minFilter=Qe,o.needsUpdate=!0,r.skin.map=o,r.skin.modelType=OA(a),r.skin.isCustom=t!==yi,Tk(r);let l;if(s?n&&(l=zr(64,64),NA(l,s),n=!this.isCanvasBlank(l)):n=!1,n){let c=new mn(l);c.magFilter=Qe,c.minFilter=Qe,c.needsUpdate=!0,r.ears.map=c,r.ears.visible=!0}else r.ears.map=null,r.ears.visible=!1;this.onSkinUpdate?.()}catch(s){console.error("Error loading skin:",s)}}async loadAndApplyCape(e,t){let n=this.getPlayerObject(e);if(n)try{let{canvas:r,image:s}=await Bo(t);if(n=this.getPlayerObject(e),!n)return;BA(r,s);let o=new mn(r);o.magFilter=Qe,o.minFilter=Qe,o.needsUpdate=!0,n.cape.map=o,n.cape.visible=!0,n.elytra.map=o,this.onSkinUpdate?.(),n.backEquipment||(n.backEquipment="cape")}catch(r){console.error("Error loading cape:",r)}}debugSwingArm(){let e=Object.values(this.entities).find(n=>n.playerObject?.animation);if(!e||!e.playerObject?.animation)return;let t=e.playerObject.animation;t.swingArm&&t.swingArm()}playAnimation(e,t){let n=String(e);if(t!=="oneSwing"){if(this.playerPerAnimation[n]===t)return;this.playerPerAnimation[n]=t}if(e==="player_entity"&&this.playerEntity?.playerObject){let{playerObject:s}=this.playerEntity;if(t==="oneSwing"){s.animation&&s.animation.swingArm&&s.animation.swingArm();return}s.animation&&s.animation.switchAnimationCallback!==void 0&&(s.animation.switchAnimationCallback=()=>{let o=s.animation;o&&(o.isMoving=t==="walking"||t==="running"||t==="crouchWalking",o.isRunning=t==="running",o.isCrouched=t==="crouch"||t==="crouchWalking")});return}let r=this.getPlayerObject(e);if(r){if(t==="oneSwing"){r.animation&&r.animation.swingArm&&r.animation.swingArm();return}r.animation&&r.animation.switchAnimationCallback!==void 0&&(r.animation.switchAnimationCallback=()=>{let s=r.animation;s&&(s.isMoving=t==="walking"||t==="running"||t==="crouchWalking",s.isRunning=t==="running",s.isCrouched=t==="crouch"||t==="crouchWalking")});return}if(this.playerEntity?.playerObject){let{playerObject:s}=this.playerEntity;if(t==="oneSwing"){s.animation&&s.animation.swingArm&&s.animation.swingArm();return}s.animation&&s.animation.switchAnimationCallback!==void 0&&(s.animation.switchAnimationCallback=()=>{let o=s.animation;o&&(o.isMoving=t==="walking"||t==="running"||t==="crouchWalking",o.isRunning=t==="running",o.isCrouched=t==="crouch"||t==="crouchWalking")})}}parseEntityLabel(e){if(e)try{if(e.type==="string")return e.value;let t=typeof e=="string"?Jp.default.simplify(Jp.default.parse(e)):N_.default.simplify(e);return Sk(t).map(this.textFromComponent).join("")}catch{return e}}textFromComponent(e){return typeof e=="string"?e:e.text??""}getItemMesh(e,t,n=!1,r){!e.nbt&&e.nbtData&&(e.nbt=e.nbtData);let s=this.worldRenderer.getItemRenderData(e,t);if(!(r&&r===s?.modelName)){if(s&&"resolvedModel"in s){let o=Whe(this.worldRenderer.material,s.resolvedModel,s.modelName,this.worldRenderer.resourcesManager.currentResources.worldBlockProvider,this.worldRenderer.resourcesManager.currentResources.mcData),a=1;t["minecraft:display_context"]==="ground"?a=.5:t["minecraft:display_context"]==="thirdperson"&&(a=6),o.scale.set(a,a,a);let l=new at;return l.add(o),{mesh:l,isBlock:!0,modelName:s.modelName}}if(s){let o=s.renderInfo?.texture==="blocks"?this.worldRenderer.material.map:this.worldRenderer.itemsTexture,{u:a,v:l,su:c,sv:d}=s,v=jme(o,{u:a,v:l,sizeX:c??1,sizeY:d??1},{faceCamera:n,use3D:!n}),_=1;return t["minecraft:display_context"]==="ground"?_=.5:t["minecraft:display_context"]==="thirdperson"&&(_=6),v.mesh.scale.set(_,_,_),{mesh:v.mesh,isBlock:!1,modelName:s.modelName,cleanup:v.cleanup}}}}setVisible(e,t){t?e.scale.set(1,1,1):e.scale.set(0,0,0)}update(e,t){let n=e.name==="player";(e.name==="zombie_villager"||e.name==="husk")&&(t.texture=`textures/1.16.4/entity/${e.name==="zombie_villager"?"zombie_villager/zombie_villager.png":`zombie/${e.name}.png`}`),e.name==="glow_item_frame"&&(t.textures||(t.textures=[]),t.textures.background="block:glow_item_frame");let r=this.entities[e.id],s=!r;if(e.delete){if(!r)return;r.userData._posTween?.stop(),r.additionalCleanup&&r.additionalCleanup(),r.traverse(_=>{_.additionalCleanup&&_.additionalCleanup()}),this.onRemoveEntity(e),this.worldRenderer.sceneOrigin.removeAndUntrack(r),qn(r),delete this.entities[e.id];return}let o;if(r===void 0){this.beforeEntityAdded(e);let _=new at;if(_.originalEntity=e,e.name==="item"||e.name==="tnt"||e.name==="falling_block"||e.name==="snowball"||e.name==="egg"||e.name==="ender_pearl"||e.name==="experience_bottle"||e.name==="splash_potion"||e.name==="lingering_potion"){let g=e.name==="tnt"||e.type==="projectile"?{name:e.name}:e.name==="falling_block"?{blockState:e.objectData}:_2e(e.metadata)?.find(w=>typeof w=="object"&&w?.itemCount);if(g){let w=this.getItemMesh(g,{"minecraft:display_context":"ground"},e.type==="projectile");if(w){if(o=w.mesh,e.name==="item"||e.type==="projectile"?(o.scale.set(.5,.5,.5),o.position.set(0,e.name==="item"?.2:.1,0)):(o.scale.set(2,2,2),o.position.set(0,.5,0)),e.name==="item"){let x=new Rs;o.onBeforeRender=()=>{let S=x.getDelta();o.rotation.y+=S}}_.additionalCleanup=()=>{w.cleanup&&w.cleanup()}}}}else if(n){let g=new at,w=this.setupPlayerObject(e,g,t);if(_.playerObject=w,o=g,e.username){let x=D_(e,{fontFamily:"mojangles"},g,this.worldRenderer.version);x&&(x.position.y=w.position.y+w.scale.y*16+3,x.scale.multiplyScalar(12))}}else o=Eqe(this.mcData,e,this.worldRenderer,this.entitiesOptions,{...t,customModel:e.customModel});if(!o)return;o.name="mesh";let b=e.pos??e.position;this.worldRenderer.sceneOrigin.track(_),_.position.set(b.x,b.y,b.z);let y=new yo(o,e.type==="hostile"?16711680:e.type==="mob"?65280:e.type==="player"?255:16753920);y.name="debug",_.add(o),_.add(y),y.visible=!1,this.worldRenderer.scene.add(_),r=_,r.name="entity",r.realName=e.name,this.entities[e.id]=r,n&&this.updatePlayerSkin(e.id,e.username,t?.texture?e.uuid:void 0,t?.texture||yi),this.setDebugMode(this.debugMode,_),this.setRendering(this.currentlyRendering,_),this.afterAddEntity(e)}else o=r.children.find(_=>_.name==="mesh");this.updateEntityEquipment(r,e);let a=w2e(e,this.mcData),c=(_2e(e.metadata)?.[0]??e.metadata?.[0]??0)&32||this.worldRenderer.playerStateReactive.cameraSpectatingEntity===e.id&&this.worldRenderer.playerStateUtils.isSpectator();for(let _ of o.children??[])_.name!=="nametag"&&(_.visible=!c);a.baby?r.scale.set(.5,.5,.5):r.scale.set(1,1,1);let d=O_("text_display",e,this.mcData),u=d?.text||a.custom_name_visible&&a.custom_name;if(e.name!=="player"&&u){let _=d&&(d.billboard_render_constraints==="fixed"||!d.billboard_render_constraints),b=d&&!(parseInt(d.style_flags,10)&4)?wqe(d.background_color):void 0,y;if(d?.text_opacity){let g=parseInt(d?.text_opacity,10);y=g>0?g:256-g}D_({...e,username:typeof u=="string"?Jp.default.simplify(Jp.default.parse(u)):N_.default.simplify(u),nameTagBackgroundColor:b,nameTagTextOpacity:y,nameTagFixed:_,nameTagScale:d?.scale,nameTagTranslation:d&&(d.translation||new K(0,0,0)),nameTagRotationLeft:p2e(d?.left_rotation),nameTagRotationRight:p2e(d?.right_rotation)},this.entitiesOptions,o,this.worldRenderer.version)}let p=O_("armor_stand",e,this.mcData);if(p){let _=(parseInt(p.client_flags,10)&1)!==0,b=(parseInt(p.client_flags,10)&4)!==0,y=(parseInt(p.client_flags,10)&8)===0,g=(parseInt(p.client_flags,10)&16)!==0;o.castShadow=!g,o.receiveShadow=!g,_?r.scale.set(.5,.5,.5):r.scale.set(1,1,1),r.traverse(w=>{switch(w.name){case"bone_baseplate":this.setVisible(w,y),w.rotation.y=-r.rotation.y;break;case"bone_head":p.head_pose&&w.setRotationFromEuler(Uo(p.head_pose));break;case"bone_body":p.body_pose&&w.setRotationFromEuler(Uo(p.body_pose));break;case"bone_rightarm":w.parent?.name!=="bone_armor"&&this.setVisible(w,b),p.left_arm_pose?w.setRotationFromEuler(Uo(p.left_arm_pose)):w.setRotationFromEuler(Uo({yaw:-10,pitch:-10,roll:0}));break;case"bone_leftarm":w.parent?.name!=="bone_armor"&&this.setVisible(w,b),p.right_arm_pose?w.setRotationFromEuler(Uo(p.right_arm_pose)):w.setRotationFromEuler(Uo({yaw:10,pitch:-10,roll:0}));break;case"bone_rightleg":p.left_leg_pose?w.setRotationFromEuler(Uo(p.left_leg_pose)):w.setRotationFromEuler(Uo({yaw:-1,pitch:-1,roll:0}));break;case"bone_leftleg":p.right_leg_pose?w.setRotationFromEuler(Uo(p.right_leg_pose)):w.setRotationFromEuler(Uo({yaw:1,pitch:1,roll:0}));break}})}let v=O_("item_frame",e,this.mcData);if(v||(v=O_("glow_item_frame",e,this.mcData)),v){let _=v?.item??e.metadata?.[8];if(o.scale.set(1,1,1),o.position.set(0,0,-.5),r.rotation.x=-e.pitch,r.children.find(b=>{if(b.name.startsWith("map_")){qn(b);let y=parseInt(b.name.split("_")[1],10);return this.itemFrameMaps[y]=this.itemFrameMaps[y]?.filter(g=>g!==b),b instanceof je&&b.material?.map?.dispose(),!0}else if(b.name==="item")return qn(b),!0;return!1})?.removeFromParent(),_&&(_.itemId??_.blockId??0)!==0){let b=v.rotation??0,y=_.nbtData?.value?.map?.value??_.components?.find(g=>g.type==="map_id")?.data;if(y)o.scale.set(16/12,16/12,1),this.addMapModel(r,y,b);else{let g=this.getItemMesh(_,{"minecraft:display_context":"fixed"});g&&(g.mesh.position.set(0,0,-.05),g.isBlock?g.mesh.scale.set(.25,.25,.25):g.mesh.scale.set(.5,.5,.5),g.mesh.rotateY(Math.PI),g.mesh.rotateZ(-b*Math.PI/4),g.mesh.name="item",r.add(g.mesh))}}}e.username!==void 0&&(r.username=e.username),this.updateNameTagVisibility(r),this.updateEntityPosition(e,s,t)}updateEntityPosition(e,t,n){let r=this.entities[e.id];if(!r)return;let s=t?0:bqe;if(e.position){let o=this.worldRenderer.sceneOrigin.getWorldPosition(r)??{x:e.position.x,y:e.position.y,z:e.position.z};r.userData._tweenTarget||(r.userData._tweenTarget={x:o.x,y:o.y,z:o.z}),r.userData._posTween?.stop(),r.userData._posTween=new br(r.userData._tweenTarget).to({x:e.position.x,y:e.position.y,z:e.position.z},s).onUpdate(()=>{r.position.set(r.userData._tweenTarget.x,r.userData._tweenTarget.y,r.userData._tweenTarget.z)}).start()}if(typeof e.yaw=="number"&&Number.isFinite(e.yaw)){let o=v2e(r.rotation.y,e.yaw);new br(r.rotation).to({y:r.rotation.y+o},s).start()}if(r?.playerObject&&n?.rotation?.head){let{playerObject:o}=r,a=n.rotation.head.y,l=typeof a=="number"&&Number.isFinite(a)?a:e.yaw,c=typeof l=="number"&&typeof e.yaw=="number"&&Number.isFinite(l)&&Number.isFinite(e.yaw)?v2e(e.yaw,l):0;o.skin.head.rotation.y=c;let d=n.rotation.head.x;o.skin.head.rotation.x=typeof d=="number"&&Number.isFinite(d)?-d:0}}afterAddEntity(e){}beforeEntityAdded(e){let t=this.pendingModelOverrides.get(e.id.toString());if(t){let{parts:n}=t;e.customModel=n.length===1?n[0]:{parts:n},this.pendingModelOverrides.delete(e.id.toString())}}loadedSkinEntityIds=new Set;maybeRenderPlayerSkin(e){let t=this.entities[e];if(e==="player_entity"&&(t=this.playerEntity,e=this.playerEntity?.originalEntity.id),!t||!t.playerObject||!t.visible)return;let n=128,r=this.worldRenderer.getCameraPosition(),s=this.worldRenderer.sceneOrigin.getWorldPosition(t),a=(s?new K(s.x,s.y,s.z):t.position.clone().add(new K(this.worldRenderer.sceneOrigin.x,this.worldRenderer.sceneOrigin.y,this.worldRenderer.sceneOrigin.z))).distanceTo(r);if(a<n&&a<this.worldRenderer.viewDistance*16){if(this.loadedSkinEntityIds.has(String(e)))return;this.updatePlayerSkin(e,t.playerObject.realUsername,t.playerObject.realPlayerUuid,!0,!0)}}playerPerAnimation={};onRemoveEntity(e){this.loadedSkinEntityIds.delete(e.id.toString()),delete this.currentSkinUrls[e.id.toString()],this.motionCache.delete(e.id.toString())}updateMap(e,t){this.cachedMapsImages[e]=t;let n=this.itemFrameMaps[e];if(n&&(n=n.filter(r=>r.parent),this.itemFrameMaps[e]=n,n))for(let r of n)r.material.map=this.loadMap(t),r.material.needsUpdate=!0,r.visible=!0}updateNameTagVisibility(e){let t=this.worldRenderer.playerStateReactive.team,n=e.originalEntity.team,r=n?.nameTagVisibility||"always",s=r==="always"||r==="hideForOwnTeam"&&n?.team!==t?.team||r==="hideForOtherTeams"&&(n?.team===t?.team||t===void 0);e.traverse(o=>{o.name==="nametag"&&(o.visible=s)})}addMapModel(e,t,n){let r=this.cachedMapsImages?.[t],s=null;r&&(s=this.loadMap(r));let o={transparent:!0,alphaTest:.1};s&&(o.map=s);let a=new is(o),l=new je(new _n(1,1),a);l.rotation.set(0,Math.PI,0),e.add(l);let c=!0;e.traverseVisible(d=>{d.name==="geometry_frame"&&(c=!1)}),c?l.position.set(0,0,.499):l.position.set(0,0,.437),l.rotateZ(Math.PI*2-n*Math.PI/2),l.name=`map_${t}`,s||(l.visible=!1),this.itemFrameMaps[t]||(this.itemFrameMaps[t]=[]),this.itemFrameMaps[t].push(l)}loadMap(e){let t=v1(e);return t.needsUpdate=!0,t}addItemModel(e,t,n,r=!1){let s=`bone_${t}item`,o=`custom_item_${t}`;if(e.traverse(l=>{l.name===o&&(l.removeFromParent(),l.additionalCleanup&&l.additionalCleanup())}),!n)return;let a=this.getItemMesh(n,{"minecraft:display_context":"thirdperson"});a?.mesh&&e.traverse(l=>{if(l.name.toLowerCase()===s||l.name===`${t}Arm`){let c=new At;c.additionalCleanup=()=>{a.cleanup&&a.cleanup()};let d=a.mesh;c.rotation.z=-Math.PI/16,a.isBlock?c.rotation.y=Math.PI/4:(d.rotation.z=-Math.PI/4,c.rotation.y=Math.PI/2,c.scale.multiplyScalar(2)),r&&(c.position.y=-8,c.position.z=5,c.position.x=t==="left"?1:-1,c.rotation.x=Math.PI),c.add(d),c.name=o,l.add(c)}})}handleDamageEvent(e,t){let n=this.entities[e]?.children.find(r=>r.name==="mesh");n&&n.traverse(r=>{if(r instanceof je&&r.material.clone){r.material.clone().dispose(),r.material=r.material.clone();let o=r.material.color.clone();r.material.color.set(16711680),new br(r.material.color).to(o,500).start()}})}raycastSceneDebug(){let e=new _a;return e.setFromCamera(new Ue(0,0),this.worldRenderer.camera),e.intersectObjects(this.worldRenderer.scene.children)[0]?.object}updateEntityModel(e,t,n,r){let s=Array.isArray(t)?t:[{modelPath:t,modelType:n,metadata:r}];this.pendingModelOverrides.set(e,{parts:s});let o=this.entities[e];o&&(this.update({...o.originalEntity,delete:!0},{}),this.update(o.originalEntity,{}))}setupPlayerObject(e,t,n){let r=new $1;r.realPlayerUuid=e.uuid??"",r.realUsername=e.username??"",r.position.set(0,16,0),Tk(r),t.add(r);let s=1/16;return t.scale.set(s,s,s),t.rotation.set(0,Math.PI,0),r.animation=new $p,r.animation.isMoving=!1,r}updateEntityEquipment(e,t){if(!e||!t.equipment)return;let n=t.type==="player";if(this.addItemModel(e,n?"right":"left",t.equipment[0],n),this.addItemModel(e,n?"left":"right",t.equipment[1],n),Kp(this.worldRenderer,e,"feet",t.equipment[2]),Kp(this.worldRenderer,e,"legs",t.equipment[3],2),Kp(this.worldRenderer,e,"chest",t.equipment[4]),Kp(this.worldRenderer,e,"head",t.equipment[5]),n&&e.playerObject){let{playerObject:r}=e;r.backEquipment=t.equipment.some(s=>s?.name==="elytra")?"elytra":"cape",r.backEquipment==="elytra"&&this.loadAndApplyCape(t.id,aT),r.cape.map===null&&(r.cape.visible=!1)}}};function w2e(i,e){let t=e?.entitiesByName[i.name];return new Proxy({},{get(n,r,s){if(typeof r!="string"||!t)return;let o=t.metadataKeys?.indexOf(r);return i.metadata?.[o??-1]}})}function O_(i,e,t){if(e.name===i)return w2e(e,t)}function Kp(i,e,t,n,r=1,s=!1){if(!n){uT(e,t);return}let o=n.name.split("_"),a,l=t==="head"&&n.name==="player_head";if(l)if(uT(e,t),n.nbt){let _=N_.default.simplify(n.nbt);try{let b;if(_.SkullOwner?b=_.SkullOwner.Properties.textures[0]?.Value:b=_["minecraft:profile"]?.Properties?.find(y=>y.name==="textures")?.value,b){a=JSON.parse(Buffer.from(b,"base64").toString()).textures?.SKIN?.url;let{skinTexturesProxy:g}=i.worldRendererConfig;g&&(a=a?.replace("http://textures.minecraft.net/",g).replace("https://textures.minecraft.net/",g))}}catch(b){console.error("Error decoding player head texture:",b)}}else a=yi;let c=o[0];if(!a){let _=`${c}_layer_${r}${s?"_overlay":""}`;a=i.resourcesManager.currentResources.customTextures.armor?.textures[_]?.src??m2e[_]}if(!a||!C0[t]){uT(e,t);return}let d=`geometry_armor_${t}${s?"_overlay":""}`,u=e.children.findLast(_=>_.name===d),p;if(u?(p=u.material,N7(a,_=>{_.magFilter=Qe,_.minFilter=Qe,_.flipY=!1,_.wrapS=mo,_.wrapT=mo,p.map=_})):(u=R0(i,a,C0[t]),t==="head"&&(u.children[0].position.y+=.01),u.name=d,p=u.material,l||(p.side=cn)),c==="leather"&&!s){let _=n.nbt?.value?.display?.value?.color?.value;if(_){let b=_>>16&255,y=_>>8&255,g=_&255;p.color.setRGB(b/255,y/255,g/255)}else p.color.setHex(11890001);Kp(i,e,t,n,r,!0)}else p.color.setHex(16777215);let v=new At;v.name=`armor_${t}${s?"_overlay":""}`,v.add(u),e.add(u)}function uT(i,e){for(let t of i.children)(t.name===`geometry_armor_${e}`||t.name===`geometry_armor_${e}_overlay`)&&t.removeFromParent()}var hT=async(i,e)=>{let t;if(!i&&!e)t=await b2e;else{if(i||(i=await h0(e,"skin")),!i)return;let{canvas:l}=await Bo(i);t=new mn(l)}t.magFilter=Qe,t.minFilter=Qe;let n=new nn,r=new Lr,s=!1,o=new je(n,r);o.scale.x=s?3:4,o.scale.y=12,o.scale.z=4,Mqe(n,40,16,s?3:4,12,4),r.map=t,r.needsUpdate=!0;let a=new at;return a.add(o),a.scale.set(.1,.1,.1),o.rotation.z=Math.PI,a};function Aqe(i,e,t,n,r,s,o,a){let l=(R,L,M,k)=>[new Ue(R/o,1-k/a),new Ue(M/o,1-k/a),new Ue(M/o,1-L/a),new Ue(R/o,1-L/a)],c=l(e+s,t,e+n+s,t+s),d=l(e+n+s,t,e+n*2+s,t+s),u=l(e,t+s,e+s,t+s+r),p=l(e+s,t+s,e+n+s,t+s+r),v=l(e+n+s,t+s,e+n+s*2,t+r+s),_=l(e+n+s*2,t+s,e+n*2+s*2,t+r+s),b=i.attributes.uv,y=[v[3],v[2],v[0],v[1]],g=[u[3],u[2],u[0],u[1]],w=[c[3],c[2],c[0],c[1]],x=[d[0],d[1],d[3],d[2]],S=[p[3],p[2],p[0],p[1]],A=[_[3],_[2],_[0],_[1]],I=[];for(let R of[y,g,w,x,S,A])for(let L of R)I.push(L.x,L.y);b.set(new Float32Array(I)),b.needsUpdate=!0}function Mqe(i,e,t,n,r,s){Aqe(i,e,t,n,r,s,64,64)}var S2e={itemRight:{rotation:[0,-90,25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},itemLeft:{rotation:[0,90,-25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},blockRight:{rotation:[0,45,0],translation:[0,0,0],scale:[.4,.4,.4]},blockLeft:{rotation:[0,225,0],translation:[0,0,0],scale:[.4,.4,.4]}},Zp=class{constructor(e,t=!1){this.worldRenderer=e;this.offHand=t;this.initCameraGroup(),this.unsubs.push(Ua(this.worldRenderer.playerStateReactive,"heldItemMain",()=>{this.offHand||this.updateItem()})),this.unsubs.push(Ua(this.worldRenderer.playerStateReactive,"heldItemOff",()=>{this.offHand&&this.updateItem()})),this.config=e.displayOptions.inWorldRenderingConfig,this.offHandDisplay=this.offHand,this.offHand||hT().then(n=>{this.disposed||(this.playerHand=n,this.updateItem())}).then(()=>{if(this.disposed)return;let n=F7(async()=>hT(this.worldRenderer.playerStateReactive.playerSkin,this.worldRenderer.playerStateReactive.onlineMode?this.worldRenderer.playerStateReactive.username:void 0),this.worldRenderer.playerStateReactive,"playerSkin",r=>{r&&(this.playerHand=r,this.updateItem())},r=>{qn(r,!0)});this.unsubs.push(n)})}holdingBlock=void 0;blockSwapAnimation=void 0;cameraGroup=new je;objectOuterGroup=new at;objectInnerGroup=new at;holdingBlockInnerGroup=new at;camera=new Yt(75,1,.1,100);stopUpdate=!1;lastHeldItem;lastHeldItemRenderKey;isSwinging=!1;nextIterStopCallbacks;idleAnimator;ready=!1;lastUpdate=0;playerHand;offHandDisplay=!1;offHandModeLegacy=!1;swingAnimator;config;disposed=!1;unsubs=[];updateItem(){if(!this.ready)return;let e=this.offHand?this.worldRenderer.playerStateReactive.heldItemOff:this.worldRenderer.playerStateReactive.heldItemMain;e?this.setNewItem(e):this.offHand?this.setNewItem():this.setNewItem({type:"hand"})}initCameraGroup(){this.cameraGroup=new je}startSwing(){this.swingAnimator?.startSwing()}stopSwing(){this.swingAnimator?.stopSwing()}render(e,t,n,r){if(!this.lastHeldItem)return;let s=performance.now();this.lastUpdate&&s-this.lastUpdate>50&&this.replaceItemModel(this.lastHeldItem),this.swingAnimator?.isCurrentlySwinging()||this.swingAnimator?.debugParams.animationStage?this.swingAnimator?.update():this.idleAnimator?.update(),this.blockSwapAnimation?.switcher.update();let o=new _r;o.add(this.cameraGroup),this.updateCameraGroup(),o.add(n.clone()),o.add(r.clone());let a=t.getSize(new Ue),l=Math.min(a.width,a.height),c=a.width-l,{offHandDisplay:d}=this;if(d&&(this.cameraGroup.scale.x=-1),t.autoClear=!1,t.clearDepth(),this.offHandDisplay)t.setViewport(0,0,l,l);else{let u=a.width-l;t.setViewport(u,0,l,l)}t.render(o,this.camera),t.setViewport(0,0,a.width,a.height),d&&(this.cameraGroup.scale.x=1)}async playBlockSwapAnimation(e){this.blockSwapAnimation??={switcher:new Xc(()=>({y:this.objectInnerGroup.position.y}),(s,o)=>{s==="y"&&(this.objectInnerGroup.position.y=o)},{y:16})};let t=e,n=this.objectInnerGroup.position.y+this.objectInnerGroup.scale.y*1.5*(t==="appeared"?1:-1),r=!1;return new Promise(s=>{this.blockSwapAnimation.switcher.transitionTo({y:n},t,()=>{r||s(!0)},()=>{r=!0,s(!1)})})}isDifferentItem(e){return this.lastHeldItemRenderKey!==_1(this.worldRenderer,e)}updateCameraGroup(){if(this.stopUpdate)return;let{camera:e}=this;this.cameraGroup.position.copy(e.position),this.cameraGroup.rotation.copy(e.rotation);let t=1,{position:n,scale:r}=this.getHandHeld3d(),s=-n.z,o=this.offHandModeLegacy?-1:1;this.objectOuterGroup.position.set(s*n.x*t*o,s*n.y,-s);let a=r*2.22*.2;this.objectOuterGroup.scale.set(a,a,a)}lastItemModelName;async createItemModel(e){if(this.lastUpdate=performance.now(),!e||e.type==="hand"&&!this.playerHand)return;let t;if(e.type==="item"||e.type==="block"){let r=this.worldRenderer.entities.getItemMesh({...e.fullItem,itemId:e.id},H7(this.worldRenderer),!1,this.lastItemModelName);if(r){let{mesh:s,isBlock:o,modelName:a}=r;o?(t=s,e.type="block"):(s.position.set(.5,.5,.5),t=s,e.type="item"),this.lastItemModelName=a}}else t=this.playerHand;if(!t)return;t.name="holdingBlock";let n=this.getHandHeld3d().rotation;return t.rotation.x=_t.degToRad(n.x),t.rotation.y=_t.degToRad(n.y),t.rotation.z=_t.degToRad(n.z),{model:t,type:e.type}}async replaceItemModel(e){if(this.blockSwapAnimation?.switcher.isTransitioning)return;if(!e){this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0;return}let t=await this.createItemModel(e);t&&(this.holdingBlock?.removeFromParent(),this.holdingBlock=t.model,this.holdingBlockInnerGroup.add(t.model))}testUnknownBlockSwitch(){this.setNewItem({type:"item",name:"minecraft:some-unknown-block",id:0,fullItem:{}})}switchRequest=0;async setNewItem(e){let t=_1(this.worldRenderer,e),n=this.lastHeldItemRenderKey!==t;if(this.lastHeldItem=e,!n)return;this.lastHeldItemRenderKey=t,this.lastItemModelName=void 0;let r=++this.switchRequest,s=!1;if(this.holdingBlock){if(s=!0,!await this.playBlockSwapAnimation("disappeared"))return;this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0}if(!e){this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0,this.blockSwapAnimation=void 0;return}if(r!==this.switchRequest)return;let o=await this.createItemModel(e);if(!o||r!==this.switchRequest)return;let a=new at;this.holdingBlockInnerGroup.removeFromParent(),this.holdingBlockInnerGroup=new at,this.holdingBlockInnerGroup.add(o.model),a.add(this.holdingBlockInnerGroup),this.holdingBlock=o.model,this.objectInnerGroup=new at,this.objectInnerGroup.add(a),this.objectInnerGroup.position.set(-.5,-.5,-.5),s&&(this.objectInnerGroup.position.y-=this.objectInnerGroup.scale.y*1.5),Object.assign(a.position,{x:.5,y:.5,z:.5}),this.objectOuterGroup=new at,this.objectOuterGroup.add(this.objectInnerGroup),this.cameraGroup.add(this.objectOuterGroup);let l=this.getHandHeld3d().rotation;this.objectOuterGroup.rotation.y=_t.degToRad(l.yOuter),s&&await this.playBlockSwapAnimation("appeared"),this.swingAnimator??=new pT(this.holdingBlockInnerGroup),this.swingAnimator.setHandMesh(this.holdingBlockInnerGroup),this.swingAnimator.type=o.type,this.config.viewBobbing&&(this.idleAnimator=new mT(this.holdingBlockInnerGroup,this.worldRenderer.playerStateReactive))}getHandHeld3d(){let e=this.lastHeldItem?.type??"hand",t=this.offHandModeLegacy?"Left":"Right",n=.8*1.15,r={x:.4,y:-.7,z:-.45},s={x:-32.4,y:42.8,z:-41.3,yOuter:0};if(e==="item"){let o=S2e[`item${t}`];r={x:-.05,y:-.7,z:-.45},s={x:o.rotation[0],y:o.rotation[1],z:o.rotation[2],yOuter:0},n=o.scale[0]*1.15}else if(e==="block"){let o=S2e[`block${t}`];r={x:.4,y:-.7,z:-.45},s={x:o.rotation[0],y:o.rotation[1],z:o.rotation[2],yOuter:0},n=o.scale[0]*1.15}return{rotation:s,position:r,scale:n}}dispose(){this.disposed=!0,this.ready=!1,this.unsubs.forEach(e=>e()),this.unsubs=[],this.idleAnimator?.destroy(),this.idleAnimator=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.blockSwapAnimation?.switcher.forceFinish(),this.blockSwapAnimation=void 0,qn(this.cameraGroup,!0),qn(this.objectOuterGroup,!0),qn(this.objectInnerGroup,!0),qn(this.holdingBlockInnerGroup,!0),this.holdingBlock=void 0,this.playerHand&&(qn(this.playerHand,!0),this.playerHand=void 0)}},mT=class{constructor(e,t){this.handMesh=e;this.playerState=t;this.handMesh=e,this.globalTime=0,this.currentState="NOT_MOVING",this.targetState="NOT_MOVING",this.defaultPosition={x:e.position.x,y:e.position.y,z:e.position.z,rotationX:e.rotation.x,rotationY:e.rotation.y,rotationZ:e.rotation.z},this.stateSwitcher=new Xc(()=>({x:this.handMesh.position.x,y:this.handMesh.position.y,z:this.handMesh.position.z,rotationX:this.handMesh.rotation.x,rotationY:this.handMesh.rotation.y,rotationZ:this.handMesh.rotation.z}),(n,r)=>{switch(n){case"x":this.handMesh.position.x=r;break;case"y":this.handMesh.position.y=r;break;case"z":this.handMesh.position.z=r;break;case"rotationX":this.handMesh.rotation.x=r;break;case"rotationY":this.handMesh.rotation.y=r;break;case"rotationZ":this.handMesh.rotation.z=r;break}},{x:2,y:2,z:2,rotation:Math.PI}),this.debugGui=new za("idle_animator",this.debugParams)}globalTime=0;lastTime=0;currentState;targetState;defaultPosition;idleOffset={y:0,rotationZ:0};tween=new Vf;idleTween=null;stateSwitcher;debugParams={walkingSpeed:8,sprintingSpeed:16,walkingAmplitude:{x:1/30,y:1/10,rotationZ:.25},sprintingAmplitude:{x:1/30,y:1/10,rotationZ:.4}};debugGui;startIdleAnimation(){this.idleTween&&this.idleTween.stop(),this.idleOffset.y=this.handMesh.position.y-this.defaultPosition.y,this.idleOffset.rotationZ=this.handMesh.rotation.z-this.defaultPosition.rotationZ,this.idleTween=new br(this.idleOffset,this.tween).to({y:.05,rotationZ:.05},3e3).easing(ar.Sinusoidal.InOut).yoyo(!0).repeat(1/0).start()}stopIdleAnimation(){this.idleTween&&(this.idleTween.stop(),this.idleOffset.y=0,this.idleOffset.rotationZ=0)}getStateTransform(e,t){switch(e){case"NOT_MOVING":case"SNEAKING":return{x:this.defaultPosition.x,y:this.defaultPosition.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ};case"WALKING":case"SPRINTING":{let n=e==="SPRINTING"?this.debugParams.sprintingSpeed:this.debugParams.walkingSpeed,r=e==="SPRINTING"?this.debugParams.sprintingAmplitude:this.debugParams.walkingAmplitude;return{x:this.defaultPosition.x+Math.sin(t*n)*r.x,y:this.defaultPosition.y-Math.abs(Math.cos(t*n))*r.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ}}}}setState(e){if(e===this.targetState)return;this.targetState=e;let t=!1;if(this.currentState!==e){if(this.stopIdleAnimation(),!t){let n=this.getStateTransform(e,this.globalTime);this.stateSwitcher.transitionTo(n,e)}this.currentState=e}}updated=!1;update(){this.stateSwitcher.update();let e=performance.now(),t=(e-this.lastTime)/1e3;if(this.lastTime=e,!this.stateSwitcher.isTransitioning)switch(this.currentState){case"NOT_MOVING":case"SNEAKING":this.globalTime=Math.PI/4;break;case"SPRINTING":case"WALKING":this.globalTime+=t;break}if(this.playerState){let n=this.playerState.movementState;n!==this.targetState&&this.setState(n)}if(!this.stateSwitcher.isTransitioning&&(this.currentState==="NOT_MOVING"||this.currentState==="SNEAKING")&&(this.idleTween?.isPlaying()||this.startIdleAnimation(),this.tween.update(),this.handMesh.position.y=this.defaultPosition.y+this.idleOffset.y,this.handMesh.rotation.z=this.defaultPosition.rotationZ+this.idleOffset.rotationZ),!this.stateSwitcher.isTransitioning&&(this.currentState==="WALKING"||this.currentState==="SPRINTING")){let n=this.getStateTransform(this.currentState,this.globalTime);Object.assign(this.handMesh.position,n),Object.assign(this.handMesh.rotation,{x:n.rotationX,y:n.rotationY,z:n.rotationZ})}}getCurrentState(){return this.currentState}destroy(){this.stopIdleAnimation(),this.stateSwitcher.forceFinish()}},pT=class{constructor(e){this.handMesh=e;this.handMesh=e,this.originalRotation=e.rotation.clone(),this.originalPosition=e.position.clone(),this.originalScale=e.scale.clone(),this.debugGui=new za("hand_animator",this.debugParams,void 0,{animationStage:{min:0,max:1,step:.01},itemSwingXPosScale:{min:-2,max:2,step:.1},itemSwingYPosScale:{min:-2,max:2,step:.1},itemSwingZPosScale:{min:-2,max:2,step:.1},itemHeightScale:{min:-2,max:2,step:.1},itemPreswingRotY:{min:-180,max:180,step:5},itemSwingXRotAmount:{min:-180,max:180,step:5},itemSwingYRotAmount:{min:-180,max:180,step:5},itemSwingZRotAmount:{min:-180,max:180,step:5},armSwingXPosScale:{min:-2,max:2,step:.1},armSwingYPosScale:{min:-2,max:2,step:.1},armSwingZPosScale:{min:-2,max:2,step:.1},armSwingYRotAmount:{min:-180,max:180,step:5},armSwingZRotAmount:{min:-180,max:180,step:5},armHeightScale:{min:-2,max:2,step:.1}})}PI=Math.PI;animationTimer=0;lastTime=0;isAnimating=!1;stopRequested=!1;originalRotation;originalPosition;originalScale;debugParams={animationTime:250,animationStage:0,useClassicSwing:!0,itemSwingXPosScale:-.8,itemSwingYPosScale:.2,itemSwingZPosScale:-.2,itemHeightScale:-.6,itemPreswingRotY:45,itemSwingXRotAmount:-30,itemSwingYRotAmount:-35,itemSwingZRotAmount:-5,armSwingXPosScale:-.3,armSwingYPosScale:.4,armSwingZPosScale:-.4,armSwingYRotAmount:70,armSwingZRotAmount:-20,armHeightScale:-.6};debugGui;type="hand";setHandMesh(e){this.handMesh=e,this.originalRotation.copy(e.rotation),this.originalPosition.copy(e.position),this.originalScale.copy(e.scale)}update(){if(!this.isAnimating&&!this.debugParams.animationStage){this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}let e=performance.now(),t=(e-this.lastTime)/1e3;this.lastTime=e,this.animationTimer+=t*1e3;let n=this.debugParams.animationStage||Math.min(this.animationTimer/this.debugParams.animationTime,1);if(n>=1){if(this.stopRequested){this.isAnimating=!1,this.stopRequested=!1,this.animationTimer=0,this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}this.animationTimer=0;return}this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);let r=n,s=Math.sqrt(r),o=Math.sin(r*this.PI),a=Math.sin(s*this.PI);if(this.type==="hand"){let l=this.debugParams.armSwingXPosScale*a,c=this.debugParams.armSwingYPosScale*Math.sin(s*this.PI*2),d=this.debugParams.armSwingZPosScale*o;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.armHeightScale*r,this.handMesh.position.z+=d,this.handMesh.rotation.y+=_t.degToRad(this.debugParams.armSwingYRotAmount*a),this.handMesh.rotation.z+=_t.degToRad(this.debugParams.armSwingZRotAmount*o)}else{let l=this.debugParams.itemSwingXPosScale*a,c=this.debugParams.itemSwingYPosScale*Math.sin(s*this.PI*2),d=this.debugParams.itemSwingZPosScale*o;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.itemHeightScale*r,this.handMesh.position.z+=d,this.handMesh.rotation.y+=_t.degToRad(this.debugParams.itemPreswingRotY),this.handMesh.rotation.x+=_t.degToRad(this.debugParams.itemSwingXRotAmount*o),this.handMesh.rotation.y+=_t.degToRad(this.debugParams.itemSwingYRotAmount*a),this.handMesh.rotation.z+=_t.degToRad(this.debugParams.itemSwingZRotAmount*o)}}startSwing(){this.stopRequested=!1,!this.isAnimating&&(this.isAnimating=!0,this.animationTimer=0,this.lastTime=performance.now())}stopSwing(){this.isAnimating&&(this.stopRequested=!0)}isCurrentlySwinging(){return this.isAnimating}};function Qp(i,e=!1){return i.displayOptions.inWorldRenderingConfig.handRenderer==="legacy"?new Zp(i,e):new Ip(i,e)}f();m();h();yt();var E2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAALUlEQVR42mP4//8/IyWYYdSAwW6Ara3tf4oMmD179n9ChhD0AsiQ0Wgc7AYAAOqH+zNQ3r9kAAAAAElFTkSuQmCC";var A2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAOklEQVR42mP4//8/IyWYYdQA3AbY2tr+H1gDZs+e/R9mCD7D8IYBzBAQTXYgEvIKQQPw2T6aEqlkAADEA/W3ycLXvwAAAABJRU5ErkJggg==";var M2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVR42mP4//8/IyWYYRgbYGtr+39wGQDiYzMUpwGzZ8+GawDRID4IkxSIMEOwaSQ6FgiFBW0NIOR8osJgBOQFALo37sVTOo/LAAAAAElFTkSuQmCC";var k2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWElEQVR42mP4//8/IyWYYXAbYGtr+59sA0CaZ8+eTZkBhNg4DQApQlYIcglMDN1VWA0AKYJpQvYONi/hDUSYIfjCgmA0EooJ2hmAK9CINgBXoA2xvEAMBgBGPud3dYZtOQAAAABJRU5ErkJggg==";var T2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYklEQVR42r1TQQrAMAxyD8tL89iMHgQJoQxHewi0UsWYFFX1/CkcF4iIsgUWOTM9ASV3F3rHF+v9rK4wEVnEFoFYbwmTbRZFFN9m0B9QZBfk2THaAhqktQdTkHYL9iZe+40vs7nda+BuVOMAAAAASUVORK5CYII=";var I2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcElEQVR42rWTWwpAIQhEbWGu1MUaXRgQcXpyP8SIPI1jibu3l5DfAKrqyFgfAczsKxx5xJUCFGYFUZXMpOe9CAa8BOS+0U5UVbYQ6Siqbi0BFT0auTSRHZqNkE6BGXgEYKYtAczIbQAz8ukzXT3l3egz49IXvXQCVAAAAABJRU5ErkJggg==";var R2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAeElEQVQ4jaWSQQ4AIQgD9WG8tI/tnkgaUgmuBw8YHcqERXK/nOUuI4JPAABMSESwA1qAQgAQwBygnfNjTaCpWoBzUlNZQJ07x9FUdgSlV5FaW4Cjq8isW8BJ2GgPtEuVdr0HKvLXHjiRI0An8jTKqo9dF000cnBzPgKuxXtbq/m1AAAAAElFTkSuQmCC";var C2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAhUlEQVR42qWTSRKAMAgE8WF5KY/FygEL2yEp9cAhCz0wJBYRx58wbowxYsZngLvHjITsgNYpJySBrPIBUMqZSHhdSw+oQlgVa01U7VRQ7huTk67aUWZaVyaNZFsSQBCTVBW3KahLyo/lQ6KR1Y+2BTUyGqke1AXoxsSzpYlU3FW0/Exv1ie0hq53Bf15aAAAAABJRU5ErkJggg==";var P2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAmklEQVR42o2SYQ6FMAiDeQfbSXdYXjSpqd869QeZQiilpbr7l2KM0cc75+xUV77YpGCjAPUqitMU3uCAXrsAlPSCcgJMbG4M0mQ1Etz/i0KlXQnmwyqpv1uH4h7fiws7ISneTYNEk0ImCxcAArGJrE4AXhypPtl7AqTdeJG8k3gHb0L6QfmK9WQTa59cSFdHRssKFHHngteV/wPDepaHIu0QVAAAAABJRU5ErkJggg==";var L2e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVR42n2Tyw3AIAxD3cGYlGFTUSmV+2o4IEEAf2JQVV1rjDGq576ec5avWVdfWIW12aMPEJBEImoPv+CAvvcCODsVNWBS8wA4A5ndv1/ytciQvBLMyeTSHD3ZYXPXXH7Y0ZMdJvCxQJls5O6tKHlPPWGEfU58WZR6ive1kKSleFNC2kXGRnrcDqhTTOmPeP3pAZnTq6Oin4X0oXbfnNZu626Io6lqGCwAAAAASUVORK5CYII=";var V_=class{constructor(e){this.worldRenderer=e;let t=[E2e,A2e,M2e,k2e,T2e,I2e,R2e,C2e,P2e,L2e];for(let r=0;r<10;r++)p1(t[r]).then(s=>{s.magFilter=Qe,s.minFilter=Qe,this.breakTextures.push(s)});let n=new st({transparent:!0,blending:Gh,alphaTest:.5});this.blockBreakMesh=new je(new nn(1,1,1),n),this.blockBreakMesh.visible=!1,this.blockBreakMesh.renderOrder=999,this.blockBreakMesh.name="blockBreakMesh",this.worldRenderer.sceneOrigin.addAndTrack(this.blockBreakMesh),this.worldRenderer.onReactivePlayerStateUpdated("gameMode",()=>{this.updateLineMaterial()}),setTimeout(()=>{this.updateLineMaterial(),this.interactionLines&&this.setHighlightCursorBlock(this.interactionLines.blockPos,this.interactionLines.shapePositions,!0)})}_cursorLinesHidden=!1;get cursorLinesHidden(){return this._cursorLinesHidden}set cursorLinesHidden(e){this.interactionLines&&(this.interactionLines.mesh.visible=!e),this._cursorLinesHidden=e}cursorLineMaterial;interactionLines=null;prevColor;blockBreakMesh;breakTextures=[];updateLineMaterial(){let e=this.worldRenderer.playerStateReactive.gameMode==="creative",t=this.worldRenderer.renderer.getPixelRatio();this.cursorLineMaterial&&this.cursorLineMaterial.dispose(),this.cursorLineMaterial=new fd({color:(()=>{switch(this.worldRenderer.worldRendererConfig.highlightBlockColor){case"blue":return 4227327;case"classic":return 0;default:return e?4227327:0}})(),linewidth:Math.max(t*.7,1)*2}),this.prevColor=this.worldRenderer.worldRendererConfig.highlightBlockColor}updateBreakAnimation(e,t,n){if(this.hideBreakAnimation(),t===null||!e||!n)return;let{position:r,width:s,height:o,depth:a}=n,l=new ut(r.x,r.y,r.z);this.blockBreakMesh.scale.set(s*1.001,o*1.001,a*1.001),l.add(new ut(e.x,e.y,e.z)),this.blockBreakMesh.position.set(l.x,l.y,l.z),this.blockBreakMesh.visible=!0,this.blockBreakMesh.material.map=this.breakTextures[t]??this.breakTextures.at(-1),this.blockBreakMesh.material.needsUpdate=!0}hideBreakAnimation(){this.blockBreakMesh&&(this.blockBreakMesh.visible=!1)}updateDisplay(){if(this.cursorLineMaterial){let{renderer:e}=this.worldRenderer;this.cursorLineMaterial.resolution.set(e.domElement.width,e.domElement.height),this.cursorLineMaterial.dashOffset=performance.now()/750}}setHighlightCursorBlock(e,t,n=!1){if(e&&this.interactionLines&&e.equals(this.interactionLines.blockPos)&&Dqe(t??[],this.interactionLines.shapePositions??[])&&!n||(this.interactionLines!==null&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.interactionLines.mesh),this.interactionLines=null),e===null))return;let r=new at;for(let{position:s,width:o,height:a,depth:l}of t??[]){let c=new ut(s.x,s.y,s.z),d=[1.0001*o,1.0001*a,1.0001*l],u=new nn(...d),p=new ud().fromEdgesGeometry(new Cl(u)),v=new Xp(p,this.cursorLineMaterial);v.position.set(c.x,c.y,c.z),v.computeLineDistances(),r.add(v)}this.worldRenderer.sceneOrigin.addAndTrack(r),r.position.set(e.x,e.y,e.z),r.visible=!this.cursorLinesHidden,this.interactionLines={blockPos:e,mesh:r,shapePositions:t}}render(){this.prevColor!==this.worldRenderer.worldRendererConfig.highlightBlockColor&&this.updateLineMaterial(),this.updateDisplay()}},Dqe=(i,e)=>{if(i.length!==e.length)return!1;for(let[t,n]of i.entries())if(n!==e[t])return!1;return!0};f();m();h();f();m();h();var Fqe=Yr($m(),1),vT=Yr(_i(),1);f();m();h();var B2e=(i,e,t)=>({...e,"minecraft:date":new Date});f();m();h();var Uqe=(i,e)=>{let t=(i.getMonth()+1).toString().padStart(2,"0"),n=i.getDate().toString().padStart(2,"0");return e.replace("MM",t).replace("dd",n)},Vqe=(i,e,t,n)=>{switch(e){case"daytime":return n["minecraft:time"];case"random":return Math.random();default:let r=n[i];return typeof r=="number"?r:void 0}},eh=(i,e)=>{switch(i.type){case"minecraft:model":return{model:i.model,...i.tints&&{tints:i.tints}};case"minecraft:empty":return{model:"minecraft:builtin/empty"};case"minecraft:select":{let t=e[i.property],n=t;i.pattern&&(i.property==="minecraft:local_time"||i.property==="minecraft:date")&&t&&(n=Uqe(t,i.pattern));let s=i.cases.find(a=>Array.isArray(a.when)?a.when.some(l=>l===n):a.when===n)?.model??i.fallback;if(!s)throw new Error(`No matching case for ${i.property}=${n}`);let o=eh(s,e);return{...o,watchProperties:[...o.watchProperties||[],{property:i.property,type:"select",currentValue:n}]}}case"minecraft:range_dispatch":{let t=Vqe(i.property,i.source,i.target,e);if(typeof t!="number")return eh(i.fallback??i.entries[0].model,e);let n=i.scale?t*i.scale:t,s=i.entries.sort((a,l)=>l.threshold-a.threshold).find(a=>n>=a.threshold)?.model??i.fallback,o=eh(s,e);return{...o,watchProperties:[...o.watchProperties||[],{property:i.property,type:"range",currentValue:t,source:i.source,...i.target&&{target:i.target}}]}}case"minecraft:condition":{let t=e[i.property],n=t?i.on_true:i.on_false,r=eh(n,e);return{...r,watchProperties:[...r.watchProperties||[],{property:i.property,type:"condition",currentValue:t}]}}case"minecraft:composite":{for(let t of i.models)try{return eh(t,e)}catch{continue}throw new Error("No resolvable model found in composite")}case"minecraft:special":return{model:"minecraft:special",special:i.model};default:throw new Error(`Unknown model type: ${i.type}`)}},O2e=(i,e)=>{let{version:t,name:n,properties:r}=e;if(r.use_duration_ms!==void 0){let o=Math.floor(r.use_duration_ms/50);r["minecraft:use_duration"]=o}let s=i.get(t,n);if(s)try{return eh(s.model,r)}catch(o){console.warn(`Error resolving model for ${n} in version ${t}:`,o);return}};var zqe=(i,e)=>{let t,n,r=i.name;r.includes(":")||(r=`minecraft:${r}`);let s=e.currentResources?.customItemModelNames[r];if(i.components){let o=new Map;for(let d of i.components)o.set(d.type,d);let a=o.get("custom_name")||o.get("item_name");a&&(t=typeof a.data=="string"?a.data:vT.default.simplify(a.data));let l=o.get("item_model");if(l&&(n=l.data),s){let d=o.get("custom_model_data");if(d?.data){let u;typeof d.data=="number"?u=d.data:typeof d.data=="object"&&"floats"in d.data&&Array.isArray(d.data.floats)&&d.data.floats.length>0&&(u=d.data.floats[0]),u&&s[u]&&(n=s[u])}}let c=o.get("lore");c&&(t??=i.displayName??i.name,t+=`
28782
28782
  ${JSON.stringify(c.data)}`)}if(i.nbt){let o=vT.default.simplify(i.nbt),a=o.display?.Name;a&&(t=a),s&&o.CustomModelData&&s[o.CustomModelData]&&(n=s[o.CustomModelData])}return{customText:t,customModel:n}};var N2e=(i,e,t,n)=>{let r=i.name,{customModel:s}=zqe(i,t);s&&(r=s);let o=B2e(n,{...e}),a=t.currentResources,l=O2e(Boe(a),{name:r,version:a.version,properties:o})?.model;return(l==="minecraft:special"?void 0:l)??r};f();m();h();var z2e=Yr(F2e(),1);var H2e=(i,e,t=!1,n=!1)=>{let r=i.modelName,s=globalThis.loadedData.itemsByName[r];Cx(e.currentResources.version)<Cx("1.13")&&(r=(0,z2e.getRenamedData)(s?"items":"blocks",r,e.currentResources.version,"1.13.1"));let o;if(!n){let l=e.currentResources?.guiAtlas?.json,c=u=>u&&l?.textures[u.replace("minecraft:","").replace("block/","").replace("blocks/","").replace("item/","").replace("items/","").replace("_inventory","")],d=c(r)??c(i.originalItemName);if(d){let u=d.u*l.width,p=d.v*l.height;return{texture:"gui",slice:[u,p,l.tileSize,l.tileSize],scale:.25,blockData:null,modelName:null}}}let a=l=>l.top??l;try{if(!e.currentResources?.itemsRenderer)throw new Error("Items renderer is not available");o=e.currentResources.itemsRenderer.getItemTexture(r,{},!1,n)??(i.originalItemName?e.currentResources.itemsRenderer.getItemTexture(i.originalItemName,{},!1,n):void 0)??e.currentResources.itemsRenderer.getItemTexture("item/missing_texture")}catch(l){reportError?.(`Failed to render item ${r} (original: ${i.originalItemName}) on ${e.currentResources.version} (resourcepack: TODO!): ${l.stack}`),o=a(e.currentResources.itemsRenderer.getItemTexture("errored"))}return o??=a(e.currentResources.itemsRenderer.getItemTexture("unknown")),"type"in o?{texture:o.type,slice:o.slice,modelName:r,blockData:null,scale:null}:{texture:"blocks",blockData:o,modelName:r,slice:null,scale:null}};var q2e=(i,e,t,n)=>{let r=t.currentResources;if(!r)throw new Error("Resources not loaded");let s=i.itemId??i.blockId??i.name,{blockState:o}=i;try{let a=o?globalThis.loadedData.blocksByStateId[o]?.name:typeof s=="number"?globalThis.loadedData.items[s]?.name:s;if(!a)throw new Error(`Item not found: ${s}`);let l=N2e({...i,name:a},e,t,n),c=H2e({modelName:l},t,!1,!0);if(!c)throw new Error(`Failed to get render info for item ${a}`);let d=c.texture==="blocks"?r.blocksAtlasImage:r.itemsAtlasImage;if(c.blockData)return{resolvedModel:c.blockData.resolvedModel,modelName:c.modelName};if(c.slice){let[u,p,v,_]=c.slice,[b,y,g,w]=[u/d.width,p/d.height,v/d.width,_/d.height];return{u:b,v:y,su:g,sv:w,renderInfo:c,modelName:c.modelName}}throw new Error(`Invalid render info for item ${a}`)}catch(a){return reportError?.(a),{u:0,v:0,su:16/r.blocksAtlasImage.width,sv:16/r.blocksAtlasImage.width,modelName:"missing"}}};f();m();h();yt();var z_=class{constructor(e){this.worldRenderer=e;e.onWorldSwitched.push(()=>{this.stopAll()}),e.onReactiveConfigUpdated("volume",t=>{this.changeVolume(t)})}audioListener;activeSounds=new Set;audioContext;soundVolumes=new Map;baseVolume=1;initAudioListener(){this.audioListener||(this.audioListener=new x5,this.worldRenderer.camera.add(this.audioListener))}playSound(e,t,n=1,r=1,s=500){this.initAudioListener();let o=new yc(this.audioListener);this.activeSounds.add(o),this.soundVolumes.set(o,n);let a=new b5,l=Date.now();a.loadAsync(t).then(c=>{if(Date.now()-l>s){console.warn("Ignored playing sound",t,"due to timeout:",s,"ms <",Date.now()-l,"ms");return}o.setBuffer(c),o.setRefDistance(20),o.setVolume(n*this.baseVolume),o.setPlaybackRate(r),this.worldRenderer.sceneOrigin.addAndTrack(o),o.position.set(e.x,e.y,e.z),o.onEnded=()=>{this.worldRenderer.sceneOrigin.removeAndUntrack(o),o.source&&o.disconnect(),this.activeSounds.delete(o),this.soundVolumes.delete(o),a.manager.itemEnd(t)},o.play()})}stopAll(){for(let e of this.activeSounds)e&&(e.stop(),e.source&&e.disconnect(),this.worldRenderer.sceneOrigin.removeAndUntrack(e));this.activeSounds.clear(),this.soundVolumes.clear()}changeVolume(e){this.baseVolume=e;for(let[t,n]of this.soundVolumes)t.setVolume(n*this.baseVolume)}destroy(){this.stopAll(),this.audioListener&&(this.audioListener.removeFromParent(),this.audioListener=void 0)}playTestSound(){this.playSound(this.worldRenderer.camera.position,"/sound.mp3")}};f();m();h();yt();var H_=class{constructor(e,t){this.worldRenderer=e;this.onRenderCallbacks=t;t.push(()=>{this.update()})}rollAngle=0;get damageRollAmount(){return 5}get damageAnimDuration(){return 200}rollAnimation;basePitch=0;baseYaw=0;cameraBobInput=null;setCameraBobInput(e){this.cameraBobInput=e}setBaseRotation(e,t){this.basePitch=e,this.baseYaw=t,this.update()}getBaseRotation(){return{pitch:this.basePitch,yaw:this.baseYaw}}shakeFromDamage(e){let t=this.rollAngle,n=t+(e??(Math.random()<.5?-1:1))*this.damageRollAmount;this.rollAnimation={startTime:performance.now(),startRoll:t,targetRoll:n,duration:this.damageAnimDuration/2}}update(){if(this.worldRenderer.playerStateUtils.isSpectatingEntity()&&(this.rollAngle=0,this.rollAnimation=void 0),this.rollAnimation){let t=performance.now(),n=t-this.rollAnimation.startTime,r=Math.min(n/this.rollAnimation.duration,1);this.rollAnimation.returnToZero?(this.rollAngle=this.rollAnimation.startRoll*(1-this.easeInOut(r)),r===1&&(this.rollAnimation=void 0)):(this.rollAngle=this.rollAnimation.startRoll+(this.rollAnimation.targetRoll-this.rollAnimation.startRoll)*this.easeOut(r),r===1&&(this.rollAnimation={startTime:t,startRoll:this.rollAngle,targetRoll:0,duration:this.damageAnimDuration/2,returnToZero:!0}))}let e=this.worldRenderer.cameraObject;if(this.worldRenderer.cameraGroupVr){let t=new Ut().setFromAxisAngle(new K(0,1,0),this.baseYaw);e.setRotationFromQuaternion(t)}else{let t=this.addAntiZfightingOffset(this.basePitch),n=this.addAntiZfightingOffset(this.baseYaw),r=new Ut().setFromAxisAngle(new K(1,0,0),t),s=new Ut().setFromAxisAngle(new K(0,1,0),n),o=new Ut().setFromAxisAngle(new K(0,0,1),_t.degToRad(this.rollAngle)),a=new Ut,l=new Ut,c=this.worldRenderer.playerStateReactive.perspective;if(this.cameraBobInput){let u=z7(this.cameraBobInput);a=new Ut().setFromAxisAngle(new K(0,0,1),u.rotation.z),l=new Ut().setFromAxisAngle(new K(1,0,0),u.rotation.x),c==="first_person"&&this.worldRenderer.camera.position.set(u.position.x,u.position.y,0)}else c==="first_person"&&this.worldRenderer.camera.position.set(0,0,0);let d=s.multiply(r).multiply(o).multiply(a).multiply(l);e.setRotationFromQuaternion(d)}}easeOut(e){return 1-(1-e)*(1-e)}easeInOut(e){return e<.5?2*e*e:1-(-2*e+2)**2/2}addAntiZfightingOffset(e){let n=(e%(Math.PI*2)+Math.PI*2)%(Math.PI*2),r=.01;return Math.abs(n)<r||Math.abs(n-Math.PI/2)<r||Math.abs(n-Math.PI)<r||Math.abs(n-3*Math.PI/2)<r?e+.001:e}};f();m();h();yt();var q_=class{constructor(e){this.worldRenderer=e;this.worldRenderer.onWorldSwitched.push(()=>{this.onWorldGone()}),this.worldRenderer.onRender.push(()=>{this.render()}),this.worldRenderer.onReactiveConfigUpdated("volume",()=>{let{volume:t}=this.worldRenderer.worldRendererConfig;for(let[n,r]of this.customMedia.entries())r.positionalAudio&&r.positionalAudio.setVolume((r.props.volume??1)*t)})}customMedia=new Map;onWorldGone(){for(let[e,t]of this.customMedia.entries())this.destroyMedia(e)}onWorldStop(){for(let[e,t]of this.customMedia.entries())this.setVideoPlaying(e,!1)}createErrorTexture(e,t,n=16777215,r="Failed to load"){let s=new OffscreenCanvas(100,100),o=100;s.width=o,s.height=o;let a=s.getContext("2d");if(!a)return new mn(s);a.clearRect(0,0,s.width,s.height),a.fillStyle=`rgba(${n>>16&255}, ${n>>8&255}, ${n&255}, 1)`,a.fillRect(0,0,s.width,s.height),a.fillStyle="#ff0000",a.font="bold 10px sans-serif",a.textAlign="center",a.textBaseline="middle",a.fillText(r,s.width/2,s.height/2,s.width);let l=new mn(s);return l.minFilter=jt,l.magFilter=jt,l}createBackgroundTexture(e,t,n=0,r=1){let s=new OffscreenCanvas(1,1);s.width=1,s.height=1;let o=s.getContext("2d");if(!o)return new mn(s);let a=n>>16&255,l=n>>8&255,c=n&255;o.fillStyle=`rgba(${a}, ${l}, ${c}, ${r})`,o.fillRect(0,0,1,1);let d=new mn(s);return d.minFilter=Qe,d.magFilter=Qe,d}validateOrigin(e,t){if(t===!0)return!0;if(t===!1)return!1;let n=new URL(e);return t.some(r=>n.origin.endsWith(r))}onPageInteraction(){for(let[e,t]of this.customMedia.entries())t.hadAutoPlayError&&(t.hadAutoPlayError=!1,this.playVideo(e))}addMedia(e,t){let n=structuredClone(t);this.destroyMedia(e);let r=!1;t.src.startsWith("https://disk.yandex.ru/i/")&&(r=!0,t.src=`/ya-image?url=${t.src}`);let{scene:s}=this.worldRenderer;t.allowOrigins!==void 0&&!this.validateOrigin(t.src,t.allowOrigins)&&(console.warn("Remote resource blocked due to security policy",t.src,"allowed origins:",t.allowOrigins,"you can control it with `remoteContentNotSameOrigin` option"),t.src="");let a=t.src.endsWith(".png")||t.src.endsWith(".jpg")||t.src.endsWith(".jpeg")||t.imageOverride;r&&!t.imageOverride&&fetch(t.src,{method:"HEAD"}).then(A=>{A.headers.get("content-type")?.startsWith("image/")&&(this.destroyMedia(e),this.addMedia(e,{...n,src:t.src,imageOverride:!0}))}).catch(console.error);let l,c,d=dn&&!a;if(d&&console.warn(`[addMedia] Video "${e}" skipped in off-thread renderer (no HTMLVideoElement)`),!a&&!d){l=document.createElement("video"),l.src=t.src.endsWith(".gif")?t.src.replace(".gif",".mp4"):t.src,l.loop=t.loop??!0;let A=(t.volume??1)*this.worldRenderer.worldRendererConfig.volume;l.volume=Math.min(A,1),l.playsInline=!0,l.crossOrigin="anonymous";let I=this.worldRenderer.soundSystem;if(I.initAudioListener(),!I.audioListener)throw new Error("Audio listener not initialized");c=new yc(I.audioListener),c.setRefDistance(6),c.setVolume(A),this.worldRenderer.sceneOrigin.addAndTrack(c),c.position.set(t.position.x,t.position.y,t.position.z),c.setMediaElementSource(l),c.connect(),l.addEventListener("pause",()=>{c?.pause(),globalThis.tempSendVideoStop?.(e,"paused",l.currentTime)}),l.addEventListener("play",()=>{c?.play(),globalThis.tempSendVideoPlay?.(e)}),l.addEventListener("seeked",()=>{c&&l&&(c.offset=l.currentTime)}),l.addEventListener("stalled",()=>{globalThis.tempSendVideoStop?.(e,"stalled",l.currentTime)}),l.addEventListener("waiting",()=>{globalThis.tempSendVideoStop?.(e,"waiting",l.currentTime)}),l.addEventListener("error",({error:R})=>{globalThis.tempSendVideoStop?.(e,`error: ${R}`,l.currentTime)}),l.addEventListener("ended",()=>{globalThis.tempSendVideoStop?.(e,"ended",l.currentTime),t.loop||(l.currentTime=0,S.ended=!0)})}let u=this.createBackgroundTexture(t.size.width,t.size.height,t.background),p=A=>{let I=this.createErrorTexture(t.size.width,t.size.height,t.background,A);b.map=I,b.needsUpdate=!0},v=new _n(1,1),_=t.allowLighting?is:st,b=new _({map:u,transparent:!0,side:t.doubleSide?cn:ei,alphaTest:.1}),y;if(l)y=new r5(l);else if(d)y=this.createErrorTexture(t.size.width,t.size.height,t.background,"Video unavailable (multi-thread)");else if(dn){let A=Sp(t.src);y=A.texture,y.minFilter=Qe,y.magFilter=Qe,A.promise.then(()=>{this.customMedia.get(e)?.texture===y&&(b.map=y,b.needsUpdate=!0)}).catch(()=>p())}else y=new pa().load(t.src,()=>{this.customMedia.get(e)?.texture===y&&(b.map=y,b.needsUpdate=!0)},void 0,()=>p());y.minFilter=Qe,y.magFilter=Qe,y.generateMipmaps=!1;let g=new je(v,b),{mesh:w}=this.positionMeshExact(g,_t.degToRad((t.rotation??0)*90),t.position,t.size.width,t.size.height);s.add(w),l&&(g.onBeforeRender=()=>{l.readyState===l.HAVE_ENOUGH_DATA&&(!l.paused||!S?.hadAutoPlayError)&&(b.map!==y&&(b.map=y,b.needsUpdate=!0),y.needsUpdate=!0,c&&(c.position.copy(w.position),c.rotation.copy(w.rotation)))});let x=A=>{let I=v.attributes.uv.array;I[0]=A.startU,I[1]=A.startV,I[2]=A.endU,I[3]=A.startV,I[4]=A.endU,I[5]=A.endV,I[6]=A.startU,I[7]=A.endV,v.attributes.uv.needsUpdate=!0};t.uvMapping&&x(t.uvMapping);let S={mesh:w,video:l,texture:y,updateUVMapping:x,positionalAudio:c,props:n,hadAutoPlayError:!1,pausedBecuaseHidden:!1,ended:!1,handleError(A){if(S.destroyed)return;console.error(`Failed to play video ${e}:`,A);let I=R=>R;p(A.name==="NotAllowedError"||A.name==="AbortError"?I("Waiting for user interaction"):I("Failed to auto play"))}};return this.customMedia.set(e,S),l&&t.autoPlay&&this.playVideo(e,!0),e}playVideo(e,t=!1){let n=this.customMedia.get(e);if(n?.video){if(!t&&n.positionalAudio&&n.video.currentTime<1){let r=n.video.currentTime;this.addMedia(e,n.props),n.video.currentTime=r,n.props.autoPlay||this.playVideo(e,!0);return}n.video.play().then(()=>{n.hadAutoPlayError=!1,console.log(`Playing video ${e}`)}).catch(r=>{n.pausedBecuaseHidden||((r.name==="NotAllowedError"||r.name==="AbortError"||r.message?.includes("not allowed")&&!n.pausedBecuaseHidden)&&(n.hadAutoPlayError=!0),n.handleError(r))})}}render(){for(let[e,t]of this.customMedia.entries()){let n=t.mesh.visible;t.mesh.visible=this.worldRenderer.shouldObjectVisible(t.mesh)&&!t.mesh.forceHide,n!==t.mesh.visible&&t.video&&(t.mesh.visible?t.pausedBecuaseHidden&&(this.playVideo(e),t.pausedBecuaseHidden=!1):t.video.paused||(t.video.pause(),t.pausedBecuaseHidden=!0))}}setVideoPlaying(e,t){let n=this.customMedia.get(e);n?.video&&(t?this.playVideo(e):n.video.pause())}setVideoSeeking(e,t){let n=this.customMedia.get(e);n?.video&&(n.video.currentTime=t)}setVideoVolume(e,t){let n=this.customMedia.get(e);n?.video&&(n.video.volume=t)}setVideoSpeed(e,t){let n=this.customMedia.get(e);n?.video&&(n.video.playbackRate=t)}setControlMode(e,t,n){let r=this.customMedia.get(e);r?.video&&(r.props.controlMode={mouseButton:t,controlMode:n})}destroyMedia(e){let{scene:t}=this.worldRenderer,n=this.customMedia.get(e);if(n){n.destroyed=!0,n.video&&(n.video.pause(),n.video.src="",n.video.remove()),n.positionalAudio&&this.worldRenderer.sceneOrigin.removeAndUntrack(n.positionalAudio),this.worldRenderer.sceneOrigin.removeAndUntrack(n.mesh),n.texture.dispose();let r=n.mesh.children[0];r&&(r.geometry.dispose(),r.material instanceof on&&r.material.dispose()),this.customMedia.delete(e)}}positionMeshExact(e,t,n,r,s,o=1){t===0&&(n.z+=.001),t===Math.PI/2&&(n.x-=.001),t===Math.PI&&(n.z-=.001),t===3*Math.PI/2&&(n.x+=.001),t===0&&(n.z+=1),t===Math.PI&&(n.x+=1),t===3*Math.PI/2&&(n.z+=1,n.x+=1),e.matrix.identity(),e.position.set(0,0,0),e.rotation.set(0,0,0),e.scale.set(1,1,1),e.rotateY(t),(t===Math.PI/2||t===3*Math.PI/2)&&(e.rotateZ(-Math.PI),e.rotateX(-Math.PI)),e.scale.set(r,s,o),e.geometry.translate(.5,.5,0),e.geometry.attributes.position.needsUpdate=!0,this.worldRenderer.sceneOrigin.track(e),e.position.set(n.x,n.y,n.z);let a=new at;a.add(e);let l=new je(new nn(.1,.1,.1),new st({color:16711680}));l.position.set(n.x,n.y,n.z),a.add(l);let c=n.x+Math.cos(t)*r,d=n.z+Math.sin(t)*r,u=new je(new nn(.1,.1,.1),new st({color:255}));u.position.set(n.x,n.y+s,n.z),a.add(u);let p=new je(new nn(.1,.1,.1),new st({color:16776960}));p.position.set(c,n.y,d),a.add(p);let v=new je(new nn(.1,.1,.1),new st({color:16711935}));v.position.set(c,n.y+s,d),a.add(v);let _=new K(this.worldRenderer.sceneOrigin.toSceneX(n.x),this.worldRenderer.sceneOrigin.toSceneY(n.y),this.worldRenderer.sceneOrigin.toSceneZ(n.z)),b=new bc(new K(Math.cos(t),0,Math.sin(t)),_,1,16711680);return a.add(b),{mesh:e,debugGroup:a}}createTestCanvasTexture(){let e=new OffscreenCanvas(100,100);e.width=100,e.height=100;let t=e.getContext("2d");return t?(t.font="10px Arial",t.fillStyle="red",t.fillText("Hello World",0,10),new mn(e)):null}lastCheck=0;THROTTLE_TIME=100;tryIntersectMedia(){if(Date.now()-this.lastCheck<this.THROTTLE_TIME)return;if(this.customMedia.size===0){this.worldRenderer.reactiveState.world.intersectMedia=null,this.worldRenderer.debugVideo=null,this.worldRenderer.cursorBlock.cursorLinesHidden=!1;return}this.lastCheck=Date.now();let{camera:e,scene:t}=this.worldRenderer,n=new _a,r=new Ue(0,0);n.setFromCamera(r,e);let s=n.intersectObjects(t.children,!0);if(s.length>0){let o=s[0],a=o.object;for(let[l,c]of this.customMedia.entries())if(a===c.mesh||c.mesh.children.includes(a)){let{uv:d}=o;if(d){let u={id:l,x:d.x,y:d.y};this.worldRenderer.reactiveState.world.intersectMedia=u,this.worldRenderer.debugVideo=c,this.worldRenderer.cursorBlock.cursorLinesHidden=!0;return}}}this.worldRenderer.reactiveState.world.intersectMedia=null,this.worldRenderer.debugVideo=null,this.worldRenderer.cursorBlock.cursorLinesHidden=!1}handleUserClick(e){let t=this.worldRenderer.reactiveState.world.intersectMedia;if(t){let{id:n,x:r,y:s}=t,o=this.customMedia.get(n),a=o?.props.controlMode;if(o?.video&&(a?.mouseButton==="both"||a?.mouseButton===e))switch(a?.controlMode){case"play_pause":{this.setVideoPlaying(n,o.video.paused);break}case"play_if_ended":{o.ended&&this.setVideoPlaying(n,!0);break}case"toggle_mute":{o.video.muted=!o.video.muted;break}}}}};f();m();h();yt();f();m();h();yt();var jqe=1,G2e=10,Ks={TARGET_SCREEN_PX:150,CANVAS_SIZE:256,LAYOUT:{DOT_Y:.3,NAME_Y:.45,DISTANCE_Y:.55},CANVAS_SCALE:2,ARROW:{enabledDefault:!1,pixelSize:50,paddingPx:50},DEFAULT_VISUAL_SCALE:1,DEFAULT_OPACITY:1};function j2e(i){let e=i.color??16711680,t=i.depthTest??!1,n=i.visualScale??i.metadata?.visualScale??(typeof window>"u"?void 0:window.serverMetadata?.waypointVisualScale)??Ks.DEFAULT_VISUAL_SCALE,r=i.opacity??i.metadata?.opacity??(typeof window>"u"?void 0:window.serverMetadata?.waypointOpacity)??Ks.DEFAULT_OPACITY,s=zr(W2e(),W2e());G_(s,e,i.label??"","0m",n);let o=new mn(s);o.anisotropy=1,o.magFilter=jt,o.minFilter=jt;let a=new ns({map:o,transparent:!0,opacity:1,depthTest:t,depthWrite:!1}),l=new Oi(a);l.position.set(0,0,0),l.renderOrder=10,l.material.opacity=r;let c=i.label??"",d="0m",u=Number.NaN,p,v,_,b,y=null,g=Ks.ARROW.enabledDefault,w=new at;w.add(l);let{x,y:S,z:A}=i.position;w.position.set(x,S,A);function I(){o.needsUpdate=!0}function R(){if(!v||!_)return;let U=v.width;_.clearRect(0,0,U,U),_.beginPath(),_.moveTo(U*.15,U*.5),_.lineTo(U*.85,U*.5),_.lineTo(U*.5,U*.15),_.closePath();let V=`#${e.toString(16).padStart(6,"0")}`;_.lineWidth=6,_.strokeStyle="black",_.stroke(),_.fillStyle=V,_.fill(),b&&(b.needsUpdate=!0)}function L(U){e=U,d="0m",u=0,G_(s,e,c,"0m",n),I(),p&&R()}function M(U){c=U??"",G_(s,e,c,d,n),I()}function k(U,V){V!==d&&(d=V,G_(s,e,U,V,n),I())}function F(U){l.visible=U}function Z(U,V,J){w.position.set(U,V,J)}function D(U,V,J,ee){let Q=V*Math.PI/180,oe=Math.tan(Q/2)*2*J*(Ks.TARGET_SCREEN_PX*n/ee);l.scale.set(oe,oe,1)}function z(){if(p)return;let U=128;v=zr(U,U),_=v.getContext("2d"),R(),b=new mn(v),b.anisotropy=1,b.magFilter=jt,b.minFilter=jt;let V=new ns({map:b,transparent:!0,depthTest:!1,depthWrite:!1,opacity:r});p=new Oi(V),p.renderOrder=12,p.visible=!1,y&&y.add(p)}function Y(U){g=U,!U&&p&&(p.visible=!1)}function le(U){p?.parent&&p.parent.remove(p),y=U,p&&U&&U.add(p)}function te(U,V,J){if(!g||(z(),!p))return!0;let ee=i.metadata?.onlyLeftRight===!0,Q=new K;U.getWorldDirection(Q);let se=U.up.clone().normalize(),oe=new K().copy(Q).cross(se).normalize(),me=new K().copy(oe).cross(Q).normalize(),_e=new K().setFromMatrixPosition(U.matrixWorld),xe=new K(w.position.x,w.position.y,w.position.z).sub(_e),ye=xe.dot(Q),W=xe.dot(oe),ke=xe.dot(me),ve=V/J,Ae=U.fov*Math.PI/180,we=2*Math.atan(Math.tan(Ae/2)*ve),$e=Math.atan2(W,ye),pe=Math.atan2(ke,ye);if(ye>0&&Math.abs($e)<=we/2&&Math.abs(pe)<=Ae/2)return p.visible=!1,!0;let Ge=$e/(we/2),Xe=pe/(Ae/2);ye<=0&&(Math.abs(Ge)>Math.abs(Xe)?(Ge=Math.sign(Ge),Xe=0):(Ge=0,Xe=Math.sign(Xe))),ee&&(Math.abs(Ge)>Math.abs(Xe)||(Ge=Ge>=0?1:-1),Xe=0);let tt=Math.max(Math.abs(Ge),Math.abs(Xe))||1,N=Ge/tt,C=Xe/tt,q=Ks.ARROW.paddingPx,B=(N+1)*.5*V,T=(1-C)*.5*J,P=Math.min(Math.max(B,q),V-q),G=Math.min(Math.max(T,q),J-q);N=P/V*2-1,C=-(G/J)*2+1;let X=Math.max(2,U.near*4),H=Math.tan(Ae/2)*X,he=H*ve,Me=_e.clone().add(Q.clone().multiplyScalar(X)).add(oe.clone().multiplyScalar(N*he)).add(me.clone().multiplyScalar(C*H));p.visible=!0,p.position.copy(Me);let Le=Math.atan2(Xe,Ge);p.material.rotation=Le-Math.PI/2;let Se=Math.tan(Ae/2)*2*X*(Ks.ARROW.pixelSize*n/J);return p.scale.set(Se,Se,1),!1}function re(U){return U.distanceTo(w.position)}function ae(U,V,J,ee){let Q=re(U);D(U,V.fov,Q,ee);let se=Math.round(Q/G2e)*G2e;se!==u&&(u=se,k(c,`${Math.max(0,se)}m`));let oe=te(V,J,ee);return F(oe),oe}function j(){let U=l.material;if(U.map?.dispose(),U.dispose(),p){p.parent&&p.parent.remove(p);let V=p.material;V.map?.dispose(),V.dispose()}p=void 0,v=void 0,_=void 0,b=void 0}return{group:w,sprite:l,enableOffscreenArrow:Y,setArrowParent:le,updateForCamera:ae,setColor:L,setLabel:M,updateDistanceText:k,setVisible:F,setPosition:Z,dispose:j}}function $2e(){let i=globalThis.devicePixelRatio||1,e=Math.min(i,jqe);return Ks.CANVAS_SCALE*e}function W2e(){return Math.round(Ks.CANVAS_SIZE*$2e())}function G_(i,e,t,n,r){let s=i.width,o=$2e(),a=i.getContext("2d");a.clearRect(0,0,s,s);let l=s/2,c=Math.round(s*Ks.LAYOUT.DOT_Y),d=Math.round(s*.05*r),u=Math.max(2,Math.round(4*o*r)),p=d+u;a.beginPath(),a.arc(l,c,p,0,Math.PI*2),a.fillStyle=`#${e.toString(16).padStart(6,"0")}`,a.fill(),a.textAlign="center",a.textBaseline="middle";let v=Math.round(s*.08*r),_=Math.round(s*.06*r);a.font=`800 ${v}px mojangles`,a.lineWidth=Math.max(2,Math.round(3*o*r));let b=Math.round(s*Ks.LAYOUT.NAME_Y);a.strokeStyle="black",a.strokeText(t,l,b),a.fillStyle="white",a.fillText(t,l,b),a.font=`800 ${_}px mojangles`,a.lineWidth=Math.max(2,Math.round(2*o*r));let y=Math.round(s*Ks.LAYOUT.DISTANCE_Y);a.strokeStyle="black",a.strokeText(n,l,y),a.fillStyle="#CCCCCC",a.fillText(n,l,y)}var W_=class{constructor(e){this.worldRenderer=e}waypoints=new Map;waypointScene=new _r;lastCameraPosition=new K;lastUpdateTime=0;UPDATE_THROTTLE_MS=16;updateWaypoints(){let e=performance.now(),t=this.worldRenderer.getCameraPosition(),n=this.lastCameraPosition.distanceTo(t)>.5,r=e-this.lastUpdateTime>this.UPDATE_THROTTLE_MS;if(!n&&!r)return;this.lastCameraPosition.copy(t),this.lastUpdateTime=e;let s=this.worldRenderer.renderer.getSize(new Ue);for(let o of this.waypoints.values()){let a=new K(o.x,o.y,o.z),l=t.distanceTo(a),c=(!o.minDistance||l>=o.minDistance)&&(o.maxDistance===1/0||l<=o.maxDistance);o.sprite.setVisible(c),c&&(o.sprite.setPosition(this.worldRenderer.sceneOrigin.toSceneX(o.x),this.worldRenderer.sceneOrigin.toSceneY(o.y),this.worldRenderer.sceneOrigin.toSceneZ(o.z)),o.sprite.updateForCamera(this.worldRenderer.getCameraPosition(),this.worldRenderer.camera,s.width,s.height))}}render(){this.waypoints.size!==0&&(this.updateWaypoints(),this.worldRenderer.renderer.render(this.waypointScene,this.worldRenderer.camera))}addWaypoint(e,t,n,r,s={}){this.removeWaypoint(e);let o=s.color??16711680,{label:a,metadata:l}=s,c=s.minDistance??0,d=s.maxDistance??1/0,u=j2e({position:new K(t,n,r),color:o,label:a||e,metadata:l});u.enableOffscreenArrow(!0),u.setArrowParent(this.waypointScene),this.waypointScene.add(u.group),this.waypoints.set(e,{id:e,x:t+.5,y:n+.5,z:r+.5,minDistance:c,maxDistance:d,color:o,label:a,sprite:u})}removeWaypoint(e){let t=this.waypoints.get(e);t&&(this.waypointScene.remove(t.sprite.group),t.sprite.dispose(),this.waypoints.delete(e))}clear(){for(let e of this.waypoints.keys())this.removeWaypoint(e)}testWaypoint(){this.addWaypoint("Test Point",0,70,0,{color:65280,label:"Test Point"}),this.addWaypoint("Spawn",0,64,0,{color:16776960,label:"Spawn"}),this.addWaypoint("Far Point",100,70,100,{color:255,label:"Far Point"}),this.addWaypoint("Far Point 2",180,170,100,{color:255,label:"Far Point 2"}),this.addWaypoint("Far Point 3",1e3,100,1e3,{color:255,label:"Far Point 3"})}getWaypoint(e){return this.waypoints.get(e)}getAllWaypoints(){return[...this.waypoints.values()]}setWaypointColor(e,t){let n=this.waypoints.get(e);n&&(n.sprite.setColor(t),n.color=t)}setWaypointLabel(e,t){let n=this.waypoints.get(e);n&&(n.label=t,n.sprite.setLabel(t))}};f();m();h();yt();var pn=class pn{constructor(e){this.worldRenderer=e;this.particleGeometry=new nn(pn.DEFAULT_PARTICLE_SIZE,pn.DEFAULT_PARTICLE_SIZE,pn.DEFAULT_PARTICLE_SIZE),this.createParticleMaterials()}explosions=new Map;particleGeometry;particleMaterials=[];testModeTimer;explosionCounter=0;createParticleMaterials(){let e=[16711680,65280,255,16776960,16711935,65535,16753920,8388736,16761035,16777215];for(let t of e){let n=new st({color:t,transparent:!0,opacity:1});this.particleMaterials.push(n)}}getRandomMaterial(){return this.particleMaterials[Math.floor(Math.random()*this.particleMaterials.length)]}createExplosion(e,t=1,n,r=pn.DEFAULT_EXPLOSION_DURATION){let s=`firework_${this.explosionCounter++}_${Date.now()}`,o=[],a=Math.floor(pn.DEFAULT_PARTICLE_COUNT*t),l;if(pn.DEBUG_SHOW_EXPLOSION_CENTER){let d=.5*t,u=new rs(d,8,8),p=new st({color:16711680,wireframe:!0,transparent:!0,opacity:.8});l=new je(u,p),l.renderOrder=999,this.worldRenderer.sceneOrigin.addAndTrack(l),l.position.set(e.x,e.y,e.z),console.log(`Debug: Created explosion center sphere at (${e.x}, ${e.y}, ${e.z}) with radius ${d}`)}for(let d=0;d<a;d++){let u=Math.random()*Math.PI*2,p=Math.sqrt(Math.random())*pn.VELOCITY_FACTOR*t,v=new ut(p*Math.cos(u),Math.random()*.5-.25,p*Math.sin(u));d<5&&(console.log(`Debug: Particle ${d} - Initial pos: (${e.x}, ${e.y}, ${e.z}), Velocity: (${v.x.toFixed(3)}, ${v.y.toFixed(3)}, ${v.z.toFixed(3)}), Distance: ${p.toFixed(3)}`),console.log(`Debug: Particle ${d} - Velocity magnitude: ${v.toString()}, Expected max: ${(pn.VELOCITY_FACTOR*t).toFixed(3)}`));let _=n===void 0?this.getRandomMaterial().clone():new st({color:n,transparent:!0,opacity:1}),b=new je(this.particleGeometry,_);b.renderOrder=1e3,this.worldRenderer.sceneOrigin.addAndTrack(b),b.position.set(e.x,e.y,e.z),d<5&&console.log(`Debug: Particle ${d} mesh created at (${b.position.x}, ${b.position.y}, ${b.position.z}) with size ${pn.DEFAULT_PARTICLE_SIZE}`);let y={position:e.clone(),velocity:v,color:new Fe(_.color),life:1,maxLife:1,mesh:b};o.push(y)}let c={id:s,position:e.clone(),particles:o,startTime:Date.now(),duration:r,size:t,debugSphere:l};return this.explosions.set(s,c),console.log(`Debug: Created firework explosion ${s} at (${e.x}, ${e.y}, ${e.z}) with ${a} particles, duration ${r}ms`),console.log(`Debug: Expected behavior - All particles should start at explosion center and move outward with velocities up to ${(pn.VELOCITY_FACTOR*t).toFixed(3)} units/second`),console.log(`Debug: Debug sphere radius: ${(.5*t).toFixed(3)}, Particle size: ${pn.DEFAULT_PARTICLE_SIZE}`),c}createExplosionFacingCamera(e,t=1,n,r=pn.DEFAULT_EXPLOSION_DURATION){let s=`firework_${this.explosionCounter++}_${Date.now()}`,o=[],a=Math.floor(pn.DEFAULT_PARTICLE_COUNT*t),l;if(pn.DEBUG_SHOW_EXPLOSION_CENTER){let p=.5*t,v=new rs(p,8,8),_=new st({color:16711680,wireframe:!0,transparent:!0,opacity:.8});l=new je(v,_),l.renderOrder=999,this.worldRenderer.sceneOrigin.addAndTrack(l),l.position.set(e.x,e.y,e.z),console.log(`Debug: Created camera-facing explosion center sphere at (${e.x}, ${e.y}, ${e.z}) with radius ${p}`)}let c=this.worldRenderer.getCameraPosition(),d=new ut(c.x-e.x,c.y-e.y,c.z-e.z).normalize();for(let p=0;p<a;p++){let v=Math.random()*Math.PI*2,_=Math.sqrt(Math.random())*pn.VELOCITY_FACTOR*t,b=new ut(_*Math.cos(v),_*Math.sin(v),0),y=new ut(b.x*d.x-b.z*d.z,b.y,b.x*d.z+b.z*d.x);p<5&&console.log(`Debug: Camera-facing Particle ${p} - Velocity: (${y.x.toFixed(3)}, ${y.y.toFixed(3)}, ${y.z.toFixed(3)}), Distance: ${_.toFixed(3)}`);let g=n===void 0?this.getRandomMaterial().clone():new st({color:n,transparent:!0,opacity:1}),w=new je(this.particleGeometry,g);w.renderOrder=1e3,this.worldRenderer.sceneOrigin.addAndTrack(w),w.position.set(e.x,e.y,e.z);let x={position:e.clone(),velocity:y,color:new Fe(g.color),life:1,maxLife:1,mesh:w};o.push(x)}let u={id:s,position:e.clone(),particles:o,startTime:Date.now(),duration:r,size:t,debugSphere:l};return this.explosions.set(s,u),console.log(`Debug: Created camera-facing firework explosion ${s} at (${e.x}, ${e.y}, ${e.z}) with ${a} particles, duration ${r}ms`),u}explode(e,t=1,n,r){return this.createExplosion(e,t,n,r).id}explodeFacingCamera(e,t=1,n,r){return this.createExplosionFacingCamera(e,t,n,r).id}startTestMode(){let e=this.worldRenderer.getCameraPosition(),t=new ut(e.x,e.y+10,e.z);this.testModeTimer=setInterval(()=>{let n=.8+Math.random()*.4,r=[16711680,65280,255,16776960,16711935,65535,16753920],s=r[Math.floor(Math.random()*r.length)];console.log("fireworkPos",t),this.explodeFacingCamera(t,n,s)},pn.TEST_INTERVAL)}updateParticle(e,t,n){let r=e.mesh.position.x===e.position.x&&e.mesh.position.y===e.position.y&&e.mesh.position.z===e.position.z;r&&e.life>.95&&(console.log(`Debug: First particle update - DeltaTime: ${t}ms (${(t/1e3).toFixed(3)}s), Duration: ${n}`),console.log(`Debug: Initial velocity: (${e.velocity.x.toFixed(3)}, ${e.velocity.y.toFixed(3)}, ${e.velocity.z.toFixed(3)}) units/s`),console.log(`Debug: Initial position: (${e.position.x.toFixed(3)}, ${e.position.y.toFixed(3)}, ${e.position.z.toFixed(3)})`)),e.velocity.y+=pn.GRAVITY;let s=e.position.clone(),o=t/1e3;e.position.add(e.velocity.scaled(o)),e.mesh.position.set(e.position.x,e.position.y,e.position.z);let a=e.life;e.life-=t/n;let l=Math.max(0,e.life);if(e.mesh.material instanceof st&&(e.mesh.material.opacity=l),r&&a>.95){let c=e.position.distanceTo(s);console.log(`Debug: Particle moved ${c.toFixed(4)} units in ${(t/1e3).toFixed(3)}s, new pos: (${e.position.x.toFixed(3)}, ${e.position.y.toFixed(3)}, ${e.position.z.toFixed(3)})`),console.log(`Debug: Life: ${a.toFixed(3)} -> ${e.life.toFixed(3)}, Opacity: ${l.toFixed(3)}`)}return e.life>0}render(){let e=Date.now(),t=16.67;this.explosions.size>0&&Math.random()<.01&&console.log(`Debug: Render called with ${this.explosions.size} explosions, deltaTime: ${t}`);for(let[n,r]of this.explosions.entries()){let s=e-r.startTime;if(s>=r.duration){console.log(`Debug: Removing expired explosion ${n} after ${s}ms`),this.removeExplosion(n);continue}s%2e3<16&&console.log(`Debug: Explosion ${n} - Elapsed: ${s}ms, Particles alive: ${r.particles.length}`),r.particles=r.particles.filter(o=>this.updateParticle(o,t,r.duration)),r.particles.length===0&&(console.log(`Debug: Removing explosion ${n} - no particles left`),this.removeExplosion(n))}}removeExplosion(e){let t=this.explosions.get(e);if(t){for(let n of t.particles)this.worldRenderer.sceneOrigin.removeAndUntrack(n.mesh),n.mesh.material instanceof on&&n.mesh.material.dispose();t.debugSphere&&(this.worldRenderer.sceneOrigin.removeAndUntrack(t.debugSphere),t.debugSphere.geometry.dispose(),t.debugSphere.material instanceof on&&t.debugSphere.material.dispose(),console.log("Debug: Removed explosion center sphere")),this.explosions.delete(e)}}stopTestMode(){this.testModeTimer&&(clearInterval(this.testModeTimer),this.testModeTimer=void 0)}destroy(){this.stopTestMode();for(let e of this.explosions.keys())this.removeExplosion(e);for(let e of this.particleMaterials)e.dispose();this.particleGeometry.dispose()}};Cn(pn,"DEFAULT_PARTICLE_COUNT",50),Cn(pn,"DEFAULT_PARTICLE_SIZE",.05),Cn(pn,"DEFAULT_EXPLOSION_DURATION",6e3),Cn(pn,"GRAVITY",-.005),Cn(pn,"VELOCITY_FACTOR",1.5),Cn(pn,"TEST_INTERVAL",1e3),Cn(pn,"DEBUG_SHOW_EXPLOSION_CENTER",!0),Cn(pn,"DEBUG_SHOW_PARTICLE_TRAILS",!1);var j_=pn;f();m();h();yt();var $_=class i{constructor(e,t,n,r){this.worldRenderer=e;this.updateCamera=t;this.updateFov=n;this.getInitialState=r}isRunning=!1;currentScript=null;currentPointIndex=0;currentTweens=[];startTime=0;totalDuration=0;currentPosition={x:0,y:0,z:0};currentRotation={yaw:0,pitch:0};currentFov=75;startScript(e){if(this.isRunning)return console.warn("Cinematic script already running. Stop current script first."),!1;if(!e.points||e.points.length===0)return console.warn("Cinematic script has no points"),!1;this.currentScript=e,this.isRunning=!0,this.currentPointIndex=0,this.startTime=performance.now(),this.totalDuration=e.points.reduce((n,r)=>n+r.duration,0);let t=this.getInitialState();return this.currentPosition={x:t.position.x,y:t.position.y,z:t.position.z},this.currentRotation={yaw:t.yaw,pitch:t.pitch},this.currentFov=t.fov,console.log(`Starting cinematic script: ${e.name||"Unnamed"} (${this.totalDuration}ms)`),this.moveToPoint(0),!0}stopScript(){if(this.isRunning){for(let e of this.currentTweens)e.stop();this.currentTweens=[],this.isRunning=!1,this.currentScript=null,this.currentPointIndex=0}}runExampleScripts(e){let t=this.worldRenderer.getCameraPosition(),n=new ut(t.x,t.y,t.z),r=i.createCircularFlyby(n,30,20,15e3),s=i.createSpiralDescent(n.offset(0,50,0),n,3,12e3),o=i.createBuildingTour([{pos:n.offset(-20,10,-20),lookAt:n,duration:3e3},{pos:n.offset(20,15,-20),lookAt:n,duration:3e3},{pos:n.offset(20,20,20),lookAt:n,duration:3e3},{pos:n.offset(-20,25,20),lookAt:n,duration:3e3}]),a=[r,s,o];return this.startScript(a[e]),{circular:r,spiral:s,buildingTour:o}}moveToPoint(e){if(!this.currentScript||e>=this.currentScript.points.length){this.handleScriptComplete();return}let t=this.currentScript.points[e],{duration:n}=t,r={x:t.x,y:t.y,z:t.z},s={yaw:t.yaw,pitch:t.pitch},o=t.fov??this.currentFov;if(t.lookAt){let u=new K(t.lookAt.x,t.lookAt.y,t.lookAt.z),p=new K(t.x,t.y,t.z),v=u.sub(p).normalize();s.yaw=Math.atan2(-v.x,-v.z),s.pitch=Math.asin(v.y)}let a=this.getEasingFunction(t.easing||"easeInOut"),l=new br(this.currentPosition).to(r,n).easing(a).onUpdate(()=>{this.updateCamera(new ut(this.currentPosition.x,this.currentPosition.y,this.currentPosition.z),this.currentRotation.yaw,this.currentRotation.pitch)}),c=new br(this.currentRotation).to(this.wrapRotation(s),n).easing(a).onUpdate(()=>{this.updateCamera(new ut(this.currentPosition.x,this.currentPosition.y,this.currentPosition.z),this.currentRotation.yaw,this.currentRotation.pitch)}),d=null;if(Math.abs(o-this.currentFov)>.1){let u={fov:this.currentFov};d=new br(u).to({fov:o},n).easing(a).onUpdate(()=>{this.currentFov=u.fov,this.updateFov(this.currentFov)})}this.currentTweens=[l,c],d&&this.currentTweens.push(d),l.start(),c.start(),d?.start(),l.onComplete(()=>{this.currentPointIndex++,this.currentScript?.onPointReached?.(e,t),this.isRunning&&this.moveToPoint(this.currentPointIndex)})}wrapRotation(e){let t=e.yaw,n=t-this.currentRotation.yaw;n>Math.PI?t-=2*Math.PI:n<-Math.PI&&(t+=2*Math.PI);let r=Math.max(-Math.PI/2+.01,Math.min(Math.PI/2-.01,e.pitch));return{yaw:t,pitch:r}}getEasingFunction(e){switch(e){case"linear":return ar.Linear.None;case"easeIn":return ar.Quadratic.In;case"easeOut":return ar.Quadratic.Out;case"easeInOut":return ar.Quadratic.InOut;case"smoothstep":return ar.Cubic.InOut;case"bounce":return ar.Bounce.Out;default:return ar.Quadratic.InOut}}handleScriptComplete(){if(!this.currentScript)return;let e=this.currentScript;e.loop?(this.currentPointIndex=0,this.moveToPoint(0)):(console.log(`Cinematic script completed: ${e.name||"Unnamed"}`),e.onComplete?.(),this.stopScript())}get running(){return this.isRunning}get progress(){if(!this.isRunning||this.totalDuration===0)return 0;let e=performance.now()-this.startTime;return Math.min(e/this.totalDuration,1)}get currentScriptName(){return this.currentScript?.name}static createCircularFlyby(e,t,n,r){let s=[];for(let a=0;a<=8;a++){let l=a/8*Math.PI*2,c=e.x+Math.cos(l)*t,d=e.z+Math.sin(l)*t,u=e.y+n;s.push({x:c,y:u,z:d,yaw:l+Math.PI/2,pitch:-.2,duration:r/8,easing:"smoothstep",lookAt:{x:e.x,y:e.y,z:e.z}})}return{name:"Circular Flyby",points:s,loop:!1}}static createSpiralDescent(e,t,n,r){let s=[],o=n*8,a=20;for(let l=0;l<=o;l++){let c=l/o,d=c*n*Math.PI*2,u=_t.lerp(e.x,t.x,c)+Math.cos(d)*a*(1-c),p=_t.lerp(e.z,t.z,c)+Math.sin(d)*a*(1-c),v=_t.lerp(e.y,t.y,c);s.push({x:u,y:v,z:p,yaw:d+Math.PI/2,pitch:-.3*c,duration:r/o,easing:"easeInOut"})}return{name:"Spiral Descent",points:s,loop:!1}}static createBuildingTour(e){return{name:"Building Tour",points:e.map((n,r)=>({x:n.pos.x,y:n.pos.y,z:n.pos.z,yaw:0,pitch:0,duration:n.duration||3e3,easing:"smoothstep",lookAt:n.lookAt?{x:n.lookAt.x,y:n.lookAt.y,z:n.lookAt.z}:void 0})),loop:!1}}};f();m();h();yt();var gT=.75,X_=class{constructor(e,t,n){this.scene=e;this.defaultSkybox=t;this.initialImage=n;this.debugGui=new za("skybox_renderer",this,["temperature","worldTime","inWater","waterBreathing","fogOrangeness","brightnessAtPosition","distanceFactor"],{brightnessAtPosition:{min:0,max:1,step:.01},temperature:{min:0,max:1,step:.01},worldTime:{min:0,max:24e3,step:1},fogOrangeness:{min:-1,max:1,step:.01},distanceFactor:{min:0,max:5,step:.01}}),n||this.createGradientSky()}texture=null;mesh=null;skyMesh=null;voidMesh=null;worldTime=0;partialTicks=0;viewDistance=4;temperature=gT;inWater=!1;waterBreathing=!1;fogBrightness=0;prevFogBrightness=0;fogOrangeness=0;distanceFactor=2.7;brightnessAtPosition=1;debugGui;async init(){this.initialImage&&await this.setSkyboxImage(this.initialImage)}async setSkyboxImage(e){this.texture&&this.texture.dispose();let t=new pa;if(this.texture=await new Promise(n=>{t.load(e,r=>{r.mapping=dc,r.encoding=uo,r.minFilter=Qe,r.magFilter=Qe,r.needsUpdate=!0,n(r)})}),this.mesh)this.mesh.material.map=this.texture,this.mesh.material.needsUpdate=!0;else{let n=new rs(500,60,40);n.scale(-1,1,1);let r=new st({map:this.texture,side:ei});this.mesh=new je(n,r),this.scene.add(this.mesh)}}update(e,t){t!==this.viewDistance&&(this.viewDistance=t,this.updateSkyColors()),this.mesh?this.mesh.position.set(0,0,0):this.skyMesh&&(this.skyMesh.position.set(0,0,0),this.voidMesh?.position.set(0,0,0),this.updateSkyColors())}updateTime(e,t=0){this.debugGui.visible||(this.worldTime=e,this.partialTicks=t,this.updateSkyColors())}updateViewDistance(e){this.viewDistance=e,this.updateSkyColors()}updateTemperature(e){this.debugGui.visible||(this.temperature=e,this.updateSkyColors())}updateWaterState(e,t){this.debugGui.visible||(this.inWater=e,this.waterBreathing=t,this.updateSkyColors())}updateDefaultSkybox(e){this.debugGui.visible||(this.defaultSkybox=e,this.updateSkyColors())}createGradientSky(){{let n=new _n(768,768);n.rotateX(-Math.PI/2),n.translate(0,16,0);let r=new st({color:16777215,side:cn,depthTest:!1});this.skyMesh=new je(n,r),this.scene.add(this.skyMesh)}{let n=new _n(768,768);n.rotateX(-Math.PI/2),n.translate(0,-16,0);let r=new st({color:16777215,side:cn,depthTest:!1});this.voidMesh=new je(n,r),this.scene.add(this.voidMesh)}this.updateSkyColors()}getFogColor(e=0){let t=this.getCelestialAngle(e),n=Math.cos(t*Math.PI*2)*2+.5;n=Math.max(0,Math.min(1,n));let r=.7529412,s=.84705883,o=1;return r*=n*.94+.06,s*=n*.94+.06,o*=n*.91+.09,new K(r,s,o)}getSkyColor(e=0,t=0,n=0){let r=this.getCelestialAngle(n),s=Math.cos(r*3.141593*2)*2+.5;s<0&&(s=0),s>1&&(s=1);let o=this.getTemperature(e,t),a=this.getSkyColorByTemp(o),l=(a>>16&255)/255,c=(a>>8&255)/255,d=(a&255)/255;return new K(l*s,c*s,d*s)}calculateCelestialAngle(e,t){let r=(e%24e3+t)/24e3-.25;return r<0&&r++,r>1&&r--,r=1-(Math.cos(r*Math.PI)+1)/2,r+=(r-r)/3,r}getCelestialAngle(e){return this.calculateCelestialAngle(this.worldTime,e)}getTemperature(e,t){return this.temperature}getSkyColorByTemp(e){e/=3,e<-1&&(e=-1),e>1&&(e=1);let t=.6222222-e*.05,r=this.fogOrangeness>0?t+(.12-t)*this.fogOrangeness*.8:t+this.fogOrangeness*.1,s=.5+e*.1+Math.abs(this.fogOrangeness)*.3;return this.hsbToRgb(r,s,1)}hsbToRgb(e,t,n){let r=0,s=0,o=0;if(t===0)r=s=o=Math.floor(n*255+.5);else{let a=(e-Math.floor(e))*6,l=a-Math.floor(a),c=n*(1-t),d=n*(1-t*l),u=n*(1-t*(1-l));switch(Math.floor(a)){case 0:r=Math.floor(n*255+.5),s=Math.floor(u*255+.5),o=Math.floor(c*255+.5);break;case 1:r=Math.floor(d*255+.5),s=Math.floor(n*255+.5),o=Math.floor(c*255+.5);break;case 2:r=Math.floor(c*255+.5),s=Math.floor(n*255+.5),o=Math.floor(u*255+.5);break;case 3:r=Math.floor(c*255+.5),s=Math.floor(d*255+.5),o=Math.floor(n*255+.5);break;case 4:r=Math.floor(u*255+.5),s=Math.floor(c*255+.5),o=Math.floor(n*255+.5);break;case 5:r=Math.floor(n*255+.5),s=Math.floor(c*255+.5),o=Math.floor(d*255+.5);break}}return 4278190080|r<<16|s<<8|Math.trunc(o)}updateSkyColors(){if(!this.skyMesh||!this.voidMesh)return;if(!this.defaultSkybox){this.skyMesh.visible=!1,this.voidMesh.visible=!1,this.mesh&&(this.mesh.visible=!1);return}this.skyMesh.visible=!0,this.voidMesh.visible=!0,this.mesh&&(this.mesh.visible=!0),this.prevFogBrightness=this.fogBrightness;let e=this.viewDistance/32,t=this.brightnessAtPosition*(1-e)+e;if(this.fogBrightness+=(t-this.fogBrightness)*.1,this.inWater){let _=this.waterBreathing?100:5;this.scene.fog=new aa(new Fe(0,0,1),.0025,_),this.scene.background=new Fe(0,0,1),this.skyMesh.material.color.set(new Fe(0,0,1)),this.voidMesh.material.color.set(new Fe(0,0,.6));return}let n=this.viewDistance*16,r=1-(.25+.75*this.viewDistance/32)**.25,s=this.getCelestialAngle(this.partialTicks),o=this.getSkyColor(0,0,this.partialTicks),a=this.getFogColor(this.partialTicks),l=Math.cos(s*Math.PI*2)*2+.5,c=Math.max(0,Math.min(1,l)),d=this.prevFogBrightness+(this.fogBrightness-this.prevFogBrightness)*this.partialTicks,u=(a.x+(o.x-a.x)*r)*c*d,p=(a.y+(o.y-a.y)*r)*c*d,v=(a.z+(o.z-a.z)*r)*c*d;this.scene.background=new Fe(u,p,v),this.scene.fog=new aa(new Fe(u,p,v),.0025,n*this.distanceFactor),this.skyMesh.material.color.set(new Fe(o.x,o.y,o.z)),this.voidMesh.material.color.set(new Fe(o.x*.2+.04,o.y*.2+.04,o.z*.6+.1))}dispose(){this.texture&&this.texture.dispose(),this.mesh&&(this.mesh.geometry.dispose(),this.mesh.material.dispose(),this.scene.remove(this.mesh)),this.skyMesh&&(this.skyMesh.geometry.dispose(),this.skyMesh.material.dispose(),this.scene.remove(this.skyMesh)),this.voidMesh&&(this.voidMesh.geometry.dispose(),this.voidMesh.material.dispose(),this.scene.remove(this.voidMesh))}};f();m();h();yt();var $qe=`
28783
28783
  precision highp float;
28784
28784
  attribute vec3 position;