@mulmoclaude/shapescript-plugin 2.7.1 → 3.0.0
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.
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/publish.d.ts +23 -8
- package/dist/core/publish.d.ts.map +1 -1
- package/dist/{core-Bt3MvxL7.js → core-7JKG8RwN.js} +44 -36
- package/dist/core-Z6twLrfC.cjs +1 -0
- package/dist/core.cjs +1 -1
- package/dist/core.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/lang/de.d.ts.map +1 -1
- package/dist/lang/en.d.ts.map +1 -1
- package/dist/lang/es.d.ts.map +1 -1
- package/dist/lang/fr.d.ts.map +1 -1
- package/dist/lang/ja.d.ts.map +1 -1
- package/dist/lang/ko.d.ts.map +1 -1
- package/dist/lang/messages.d.ts +4 -0
- package/dist/lang/messages.d.ts.map +1 -1
- package/dist/lang/ptBR.d.ts.map +1 -1
- package/dist/lang/zh.d.ts.map +1 -1
- package/dist/render/index.d.ts +1 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/tool.d.ts +6 -0
- package/dist/render/tool.d.ts.map +1 -1
- package/dist/render.cjs +5 -5
- package/dist/render.js +23 -23
- package/dist/style.css +1 -1
- package/dist/vue/View.vue.d.ts.map +1 -1
- package/dist/vue.cjs +3 -3
- package/dist/vue.js +369 -338
- package/package.json +3 -3
- package/dist/core-B3GMdzSM.cjs +0 -1
package/dist/vue.cjs
CHANGED
|
@@ -4213,8 +4213,8 @@ void main() {
|
|
|
4213
4213
|
|
|
4214
4214
|
}
|
|
4215
4215
|
|
|
4216
|
-
}`,gn=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,n){if(this.texture===null){let r=new t.A(e.texture);(e.depthNear!==n.depthNear||e.depthFar!==n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){let n=e.cameras[0].viewport,r=new t.on({vertexShader:mn,fragmentShader:hn,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new t.Y(new t.ot(20,20),r)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},_n=class extends t.k{constructor(e,n){super();let r=this,a=null,o=1,s=null,c=`local-floor`,l=1,u=null,d=null,f=null,p=null,m=null,h=null,g=typeof XRWebGLBinding<`u`,_=new gn,v={},y=n.getContextAttributes(),b=null,x=null,S=[],C=[],w=new t.Sn,T=null,E=null,D=new t.it;D.viewport=new t.wn;let O=new t.it;O.viewport=new t.wn;let k=[D,O],A=new t.u,j=null,M=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getTargetRaySpace()},this.getControllerGrip=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getGripSpace()},this.getHand=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getHandSpace()};function N(e){let t=C.indexOf(e.inputSource);if(t===-1)return;let n=S[t];n!==void 0&&(n.update(e.inputSource,e.frame,u||s),n.dispatchEvent({type:e.type,data:e.inputSource}))}function ee(){a.removeEventListener(`select`,N),a.removeEventListener(`selectstart`,N),a.removeEventListener(`selectend`,N),a.removeEventListener(`squeeze`,N),a.removeEventListener(`squeezestart`,N),a.removeEventListener(`squeezeend`,N),a.removeEventListener(`end`,ee),a.removeEventListener(`inputsourceschange`,P);for(let e=0;e<S.length;e++){let t=C[e];t!==null&&(C[e]=null,S[e].disconnect(t))}j=null,M=null,_.reset();for(let e in v)delete v[e];if(e.setRenderTarget(b),m=null,p=null,f=null,a=null,x=null,I.stop(),r.isPresenting=!1,e.setPixelRatio(T),e.setSize(w.width,w.height,!1),E!==null){let e=E.camera;e.fov=E.fov,e.zoom=E.zoom,e.updateProjectionMatrix(),E=null}r.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(e){o=e,r.isPresenting===!0&&t.Ln(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(e){c=e,r.isPresenting===!0&&t.Ln(`WebXRManager: Cannot change reference space type while presenting.`)},this.getReferenceSpace=function(){return u||s},this.setReferenceSpace=function(e){u=e},this.getBaseLayer=function(){return p===null?m:p},this.getBinding=function(){return f===null&&g&&(f=new XRWebGLBinding(a,n)),f},this.getFrame=function(){return h},this.getSession=function(){return a},this.setSession=async function(i){if(a=i,a!==null){if(b=e.getRenderTarget(),a.addEventListener(`select`,N),a.addEventListener(`selectstart`,N),a.addEventListener(`selectend`,N),a.addEventListener(`squeeze`,N),a.addEventListener(`squeezestart`,N),a.addEventListener(`squeezeend`,N),a.addEventListener(`end`,ee),a.addEventListener(`inputsourceschange`,P),y.xrCompatible!==!0&&await n.makeXRCompatible(),T=e.getPixelRatio(),e.getSize(w),g&&`createProjectionLayer`in XRWebGLBinding.prototype){let r=null,i=null,s=null;y.depth&&(s=y.stencil?n.DEPTH24_STENCIL8:n.DEPTH_COMPONENT24,r=y.stencil?t.E:t.T,i=y.stencil?t.gn:t.vn);let c={colorFormat:n.RGBA8,depthFormat:s,scaleFactor:o};f=this.getBinding(),p=f.createProjectionLayer(c),a.updateRenderState({layers:[p]}),e.setPixelRatio(1),e.setSize(p.textureWidth,p.textureHeight,!1),x=new t.En(p.textureWidth,p.textureHeight,{format:t.mt,type:t.mn,depthTexture:new t.D(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,r),stencilBuffer:y.stencil,colorSpace:e.outputColorSpace,samples:y.antialias?4:0,resolveDepthBuffer:p.ignoreDepthValues===!1,resolveStencilBuffer:p.ignoreDepthValues===!1,storeMultisampledDepthBuffer:p.ignoreDepthValues===!1,storeMultisampledStencilBuffer:p.ignoreDepthValues===!1})}else{let r={antialias:y.antialias,alpha:!0,depth:y.depth,stencil:y.stencil,framebufferScaleFactor:o};m=new XRWebGLLayer(a,n,r),a.updateRenderState({baseLayer:m}),e.setPixelRatio(1),e.setSize(m.framebufferWidth,m.framebufferHeight,!1),x=new t.En(m.framebufferWidth,m.framebufferHeight,{format:t.mt,type:t.mn,colorSpace:e.outputColorSpace,stencilBuffer:y.stencil,resolveDepthBuffer:m.ignoreDepthValues===!1,resolveStencilBuffer:m.ignoreDepthValues===!1,storeMultisampledDepthBuffer:m.ignoreDepthValues===!1,storeMultisampledStencilBuffer:m.ignoreDepthValues===!1})}x.isXRRenderTarget=!0,this.setFoveation(l),u=null,s=await a.requestReferenceSpace(c),I.setContext(a),I.start(),r.isPresenting=!0,r.dispatchEvent({type:`sessionstart`})}},this.getEnvironmentBlendMode=function(){if(a!==null)return a.environmentBlendMode},this.getDepthTexture=function(){return _.getDepthTexture()};function P(e){for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=C.indexOf(n);r>=0&&(C[r]=null,S[r].disconnect(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=C.indexOf(n);if(r===-1){for(let e=0;e<S.length;e++)if(e>=C.length){C.push(n),r=e;break}else if(C[e]===null){C[e]=n,r=e;break}if(r===-1)break}let i=S[r];i&&i.connect(n)}}let te=new t.Cn,F=new t.Cn;function ne(e,t,n){te.setFromMatrixPosition(t.matrixWorld),F.setFromMatrixPosition(n.matrixWorld);let r=te.distanceTo(F),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function re(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(a===null)return;let t=e.near,n=e.far;_.texture!==null&&(_.depthNear>0&&(t=_.depthNear),_.depthFar>0&&(n=_.depthFar)),A.near=O.near=D.near=t,A.far=O.far=D.far=n,(j!==A.near||M!==A.far)&&(a.updateRenderState({depthNear:A.near,depthFar:A.far}),j=A.near,M=A.far),A.layers.mask=e.layers.mask|6,D.layers.mask=A.layers.mask&-5,O.layers.mask=A.layers.mask&-3;let r=e.parent,i=A.cameras;re(A,r);for(let e=0;e<i.length;e++)re(i[e],r);i.length===2?ne(A,D,O):A.projectionMatrix.copy(D.projectionMatrix),E===null&&e.isPerspectiveCamera&&(E={camera:e,fov:e.fov,zoom:e.zoom}),ie(e,A,r)};function ie(e,n,r){r===null?e.matrix.copy(n.matrixWorld):(e.matrix.copy(r.matrixWorld),e.matrix.invert(),e.matrix.multiply(n.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(n.projectionMatrix),e.projectionMatrixInverse.copy(n.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=t.ut*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}this.getCamera=function(){return A},this.getFoveation=function(){if(p!==null||m!==null)return l},this.setFoveation=function(e){l=e,p!==null&&(p.fixedFoveation=e),m!==null&&m.fixedFoveation!==void 0&&(m.fixedFoveation=e)},this.hasDepthSensing=function(){return _.texture!==null},this.getDepthSensingMesh=function(){return _.getMesh(A)},this.getCameraTexture=function(e){return v[e]};let ae=null;function oe(n,i){if(d=i.getViewerPose(u||s),h=i,d!==null){let n=d.views;m!==null&&(e.setRenderTargetFramebuffer(x,m.framebuffer),e.setRenderTarget(x));let i=!1;n.length!==A.cameras.length&&(A.cameras.length=0,i=!0);for(let r=0;r<n.length;r++){let a=n[r],o=null;if(m!==null)o=m.getViewport(a);else{let t=f.getViewSubImage(p,a);o=t.viewport,r===0&&(e.setRenderTargetTextures(x,t.colorTexture,t.depthStencilTexture),e.setRenderTarget(x))}let s=k[r];s===void 0&&(s=new t.it,s.layers.enable(r),s.viewport=new t.wn,k[r]=s),s.matrix.fromArray(a.transform.matrix),s.matrix.decompose(s.position,s.quaternion,s.scale),s.projectionMatrix.fromArray(a.projectionMatrix),s.projectionMatrixInverse.copy(s.projectionMatrix).invert(),s.viewport.set(o.x,o.y,o.width,o.height),r===0&&(A.matrix.copy(s.matrix),A.matrix.decompose(A.position,A.quaternion,A.scale)),i===!0&&A.cameras.push(s)}let o=a.enabledFeatures;if(o&&o.includes(`depth-sensing`)&&a.depthUsage==`gpu-optimized`&&g){f=r.getBinding();let e=f.getDepthInformation(n[0]);e&&e.isValid&&e.texture&&_.init(e,a.renderState)}if(o&&o.includes(`camera-access`)&&g){e.state.unbindTexture(),f=r.getBinding();for(let e=0;e<n.length;e++){let r=n[e].camera;if(r){let e=v[r];e||(e=new t.A,v[r]=e);let n=f.getCameraImage(r);e.sourceTexture=n}}}}for(let e=0;e<S.length;e++){let t=C[e],n=S[e];t!==null&&n!==void 0&&n.update(t,i,u||s)}ae&&ae(n,i),i.detectedPlanes&&r.dispatchEvent({type:`planesdetected`,data:i}),h=null}let I=new i;I.setAnimationLoop(oe),this.setAnimationLoop=function(e){ae=e},this.dispose=function(){}}},vn=new t.J,yn=new t.q;yn.set(-1,0,0,0,1,0,0,0,1);function bn(e,n){function r(e,t){e.matrixAutoUpdate===!0&&e.updateMatrix(),t.value.copy(e.matrix)}function i(n,r){r.color.getRGB(n.fogColor.value,t.Nn(e)),r.isFog?(n.fogNear.value=r.near,n.fogFar.value=r.far):r.isFogExp2&&(n.fogDensity.value=r.density)}function a(e,t,n,r,i){t.isNodeMaterial?t.uniformsNeedUpdate=!1:t.isMeshBasicMaterial?o(e,t):t.isMeshLambertMaterial?(o(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshToonMaterial?(o(e,t),f(e,t)):t.isMeshPhongMaterial?(o(e,t),d(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshStandardMaterial?(o(e,t),p(e,t),t.isMeshPhysicalMaterial&&m(e,t,i)):t.isMeshMatcapMaterial?(o(e,t),h(e,t)):t.isMeshDepthMaterial?o(e,t):t.isMeshDistanceMaterial?(o(e,t),g(e,t)):t.isMeshNormalMaterial?o(e,t):t.isLineBasicMaterial?(s(e,t),t.isLineDashedMaterial&&c(e,t)):t.isPointsMaterial?l(e,t,n,r):t.isSpriteMaterial?u(e,t):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}function o(e,t){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.bumpMap&&(e.bumpMap.value=t.bumpMap,r(t.bumpMap,e.bumpMapTransform),e.bumpScale.value=t.bumpScale,t.side===1&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,r(t.normalMap,e.normalMapTransform),e.normalScale.value.copy(t.normalScale),t.side===1&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,r(t.displacementMap,e.displacementMapTransform),e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap,r(t.emissiveMap,e.emissiveMapTransform)),t.specularMap&&(e.specularMap.value=t.specularMap,r(t.specularMap,e.specularMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let i=n.get(t),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,e.envMapRotation.value.setFromMatrix4(vn.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(yn),e.reflectivity.value=t.reflectivity,e.ior.value=t.ior,e.refractionRatio.value=t.refractionRatio),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity,r(t.lightMap,e.lightMapTransform)),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity,r(t.aoMap,e.aoMapTransform))}function s(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform))}function c(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}function l(e,t,n,i){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*n,e.scale.value=i*.5,t.map&&(e.map.value=t.map,r(t.map,e.uvTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function u(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function d(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}function f(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}function p(e,t){e.metalness.value=t.metalness,t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap,r(t.metalnessMap,e.metalnessMapTransform)),e.roughness.value=t.roughness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap,r(t.roughnessMap,e.roughnessMapTransform)),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}function m(e,t,n){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,r(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,r(t.sheenRoughnessMap,e.sheenRoughnessMapTransform))),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,r(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,r(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,r(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===1&&e.clearcoatNormalScale.value.negate())),t.dispersion>0&&(e.dispersion.value=t.dispersion),t.retroreflectivity>0&&(e.retroreflectivity.value=t.retroreflectivity),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,r(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,r(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform))),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=n.texture,e.transmissionSamplerSize.value.set(n.width,n.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,r(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,r(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,r(t.anisotropyMap,e.anisotropyMapTransform))),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,r(t.specularColorMap,e.specularColorMapTransform)),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,r(t.specularIntensityMap,e.specularIntensityMapTransform))}function h(e,t){t.matcap&&(e.matcap.value=t.matcap)}function g(e,t){let r=n.get(t).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:a}}function xn(e,n,r,i){let a={},o={},s=[],c=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function l(e,t){let n=t.program;i.uniformBlockBinding(e,n)}function u(e,t){let r=a[e.id];r===void 0&&(_(e),r=d(e),a[e.id]=r,e.addEventListener(`dispose`,y));let s=t.program;i.updateUBOMapping(e,s);let c=n.render.frame;o[e.id]!==c&&(p(e),o[e.id]=c)}function d(t){let n=f();t.__bindingPointIndex=n;let r=e.createBuffer(),i=t.__size,a=t.usage;return e.bindBuffer(e.UNIFORM_BUFFER,r),e.bufferData(e.UNIFORM_BUFFER,i,a),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,n,r),r}function f(){for(let e=0;e<c;e++)if(s.indexOf(e)===-1)return s.push(e),e;return t.jn(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function p(t){let n=a[t.id],r=t.uniforms,i=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let e=0,t=r.length;e<t;e++){let t=r[e];if(Array.isArray(t))for(let n=0,r=t.length;n<r;n++)m(t[n],e,n,i);else m(t,e,0,i)}e.bindBuffer(e.UNIFORM_BUFFER,null)}function m(t,n,r,i){if(g(t,n,r,i)===!0){let n=t.__offset,r=t.value;if(Array.isArray(r)){let e=0;for(let n=0;n<r.length;n++){let i=r[n],a=v(i);h(i,t.__data,e),typeof i!=`number`&&typeof i!=`boolean`&&!i.isMatrix3&&!ArrayBuffer.isView(i)&&(e+=a.storage/Float32Array.BYTES_PER_ELEMENT)}}else h(r,t.__data,0);e.bufferSubData(e.UNIFORM_BUFFER,n,t.__data)}}function h(e,t,n){typeof e==`number`||typeof e==`boolean`?t[0]=e:e.isMatrix3?(t[0]=e.elements[0],t[1]=e.elements[1],t[2]=e.elements[2],t[3]=0,t[4]=e.elements[3],t[5]=e.elements[4],t[6]=e.elements[5],t[7]=0,t[8]=e.elements[6],t[9]=e.elements[7],t[10]=e.elements[8],t[11]=0):ArrayBuffer.isView(e)?t.set(new e.constructor(e.buffer,e.byteOffset,t.length)):e.toArray(t,n)}function g(e,t,n,r){let i=e.value,a=t+`_`+n;if(r[a]===void 0)return r[a]=typeof i==`number`||typeof i==`boolean`?i:ArrayBuffer.isView(i)?i.slice():i.clone(),!0;{let e=r[a];if(typeof i==`number`||typeof i==`boolean`){if(e!==i)return r[a]=i,!0}else if(ArrayBuffer.isView(i))return!0;else if(e.equals(i)===!1)return e.copy(i),!0}return!1}function _(e){let t=e.uniforms,n=0;for(let e=0,r=t.length;e<r;e++){let r=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=Array.isArray(t.value)?t.value:[t.value];for(let e=0,r=i.length;e<r;e++){let r=i[e],a=v(r),o=n%16,s=o%a.boundary,c=o+s;n+=s,c!==0&&16-c<a.storage&&(n+=16-c),t.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),t.__offset=n,n+=a.storage}}}let r=n%16;return r>0&&(n+=16-r),e.__size=n,e.__cache={},this}function v(e){let n={boundary:0,storage:0};return typeof e==`number`||typeof e==`boolean`?(n.boundary=4,n.storage=4):e.isVector2?(n.boundary=8,n.storage=8):e.isVector3||e.isColor?(n.boundary=16,n.storage=12):e.isVector4?(n.boundary=16,n.storage=16):e.isMatrix3?(n.boundary=48,n.storage=48):e.isMatrix4?(n.boundary=64,n.storage=64):e.isTexture?t.Ln(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(e)?(n.boundary=16,n.storage=e.byteLength):t.Ln(`WebGLRenderer: Unsupported uniform value type.`,e),n}function y(t){let n=t.target;n.removeEventListener(`dispose`,y);let r=s.indexOf(n.__bindingPointIndex);s.splice(r,1),e.deleteBuffer(a[n.id]),delete a[n.id],delete o[n.id]}function b(){for(let t in a)e.deleteBuffer(a[t]);s=[],a={},o={}}return{bind:l,update:u,dispose:b}}var Sn=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]),Cn=null;function wn(){return Cn===null&&(Cn=new t.w(Sn,16,16,t.Gt,t.L),Cn.name=`DFG_LUT`,Cn.minFilter=t.B,Cn.magFilter=t.B,Cn.wrapS=t.h,Cn.wrapT=t.h,Cn.generateMipmaps=!1,Cn.needsUpdate=!0),Cn}var Tn=class{constructor(e={}){let{canvas:n=t.kn(),context:r=null,depth:o=!0,stencil:s=!1,alpha:c=!1,antialias:l=!1,premultipliedAlpha:u=!0,preserveDrawingBuffer:d=!1,powerPreference:_=`default`,failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:y=!1,outputBufferType:b=t.mn}=e;this.isWebGLRenderer=!0;let x;if(r!==null){if(typeof WebGLRenderingContext<`u`&&r instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);x=r.getContextAttributes().alpha}else x=c;let S=b,C=new Set([t.ht,t.Kt,t.Xt]),w=new Set([t.mn,t.vn,t.xn,t.gn,t.yn,t.bn]),T=new Uint32Array(4),E=new Int32Array(4),D=new t.Cn,O=null,k=null,A=[],j=[],M=null;this.domElement=n,this.debug={checkShaderErrors:!0,diagnostics:{keywords:!1},onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=0,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let N=this,ee=!1,P=null,te=null,F=null,ne=null;this._outputColorSpace=t.rn;let R=0,z=0,B=null,V=-1,le=null,H=new t.wn,ue=new t.wn,de=null,fe=new t.g(0),pe=0,me=n.width,U=n.height,W=1,G=null,he=null,ge=new t.wn(0,0,me,U),_e=new t.wn(0,0,me,U),ve=!1,ye=new t.N,be=!1,xe=!1,Se=new t.J,Ce=new t.Cn,we=new t.wn,Te={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},Ee=!1;function De(){return B===null?W:1}let K=r;function Oe(e,t){return n.getContext(e,t)}let q,ke,J,Ae,Y,X,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;try{let e={alpha:!0,depth:o,stencil:s,antialias:l,premultipliedAlpha:u,preserveDrawingBuffer:d,powerPreference:_,failIfMajorPerformanceCaveat:v};if(`setAttribute`in n&&n.setAttribute(`data-engine`,`three.js r186`),n.addEventListener(`webglcontextlost`,Ye,!1),n.addEventListener(`webglcontextrestored`,Xe,!1),n.addEventListener(`webglcontextcreationerror`,Ze,!1),K===null){let t=`webgl2`;if(K=Oe(t,e),K===null)throw Oe(t)?Error(`THREE.WebGLRenderer: Error creating WebGL context with your selected attributes.`):Error(`THREE.WebGLRenderer: Error creating WebGL context.`)}Je()}catch(e){throw n.removeEventListener(`webglcontextlost`,Ye,!1),n.removeEventListener(`webglcontextrestored`,Xe,!1),n.removeEventListener(`webglcontextcreationerror`,Ze,!1),t.jn(`WebGLRenderer: `+e.message),e}function Je(){q=new ie(K),q.init(),Ge=new pn(K,q),ke=new h(K,q,e,Ge),J=new dn(K,q),ke.reversedDepthBuffer&&y&&J.buffers.depth.setReversed(!0),te=K.createFramebuffer(),F=K.createFramebuffer(),ne=K.createFramebuffer(),Ae=new I(K),Y=new Wt,X=new fn(K,q,J,Y,ke,Ge,Ae),je=new re(N),Me=new a(K),Ke=new p(K,Me),Ne=new ae(K,Me,Ae,Ke),Pe=new L(K,Ne,Me,Ke,Ae),He=new se(K,ke,X),ze=new g(Y),Fe=new Ut(N,je,q,ke,Ke,ze),Ie=new bn(N,Y),Le=new Jt,Re=new tn(q),Ve=new f(N,je,J,Pe,x,u),Be=new un(N,Pe,ke),qe=new xn(K,Ae,ke,J),Ue=new m(K,q,Ae),We=new oe(K,q,Ae),Ae.programs=Fe.programs,N.capabilities=ke,N.extensions=q,N.properties=Y,N.renderLists=Le,N.shadowMap=Be,N.state=J,N.info=Ae}S!==1009&&(M=new ce(S,n.width,n.height,l,o,s));let Z=new _n(N,K);this.xr=Z,this.getContext=function(){return K},this.getContextAttributes=function(){return K.getContextAttributes()},this.forceContextLoss=function(){let e=q.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=q.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return W},this.setPixelRatio=function(e){e!==void 0&&(W=e,this.setSize(me,U,!1))},this.getSize=function(e){return e.set(me,U)},this.setSize=function(e,r,i=!0){if(Z.isPresenting){t.Ln(`WebGLRenderer: Can't change size while VR device is presenting.`);return}me=e,U=r,n.width=Math.floor(e*W),n.height=Math.floor(r*W),i===!0&&(n.style.width=e+`px`,n.style.height=r+`px`),M!==null&&M.setSize(n.width,n.height),this.setViewport(0,0,e,r)},this.getDrawingBufferSize=function(e){return e.set(me*W,U*W).floor()},this.setDrawingBufferSize=function(e,t,r){me=e,U=t,W=r,n.width=Math.floor(e*r),n.height=Math.floor(t*r),this.setViewport(0,0,e,t)},this.setEffects=function(e){if(S===1009){t.jn(`WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(e){for(let n=0;n<e.length;n++)if(e[n].isOutputPass===!0){t.Ln(`WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}M.setEffects(e||[])},this.getCurrentViewport=function(e){return e.copy(H)},this.getViewport=function(e){return e.copy(ge)},this.setViewport=function(e,t,n,r){e.isVector4?ge.set(e.x,e.y,e.z,e.w):ge.set(e,t,n,r),J.viewport(H.copy(ge).multiplyScalar(W).round())},this.getScissor=function(e){return e.copy(_e)},this.setScissor=function(e,t,n,r){e.isVector4?_e.set(e.x,e.y,e.z,e.w):_e.set(e,t,n,r),J.scissor(ue.copy(_e).multiplyScalar(W).round())},this.getScissorTest=function(){return ve},this.setScissorTest=function(e){J.setScissorTest(ve=e)},this.setOpaqueSort=function(e){G=e},this.setTransparentSort=function(e){he=e},this.getClearColor=function(e){return e.copy(Ve.getClearColor())},this.setClearColor=function(){Ve.setClearColor(...arguments)},this.getClearAlpha=function(){return Ve.getClearAlpha()},this.setClearAlpha=function(){Ve.setClearAlpha(...arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(B!==null){let t=B.texture.format;e=C.has(t)}if(e){let e=B.texture.type,t=w.has(e),n=Ve.getClearColor(),r=Ve.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(T[0]=i,T[1]=a,T[2]=o,T[3]=r,K.clearBufferuiv(K.COLOR,0,T)):(E[0]=i,E[1]=a,E[2]=o,E[3]=r,K.clearBufferiv(K.COLOR,0,E))}else r|=K.COLOR_BUFFER_BIT}t&&(r|=K.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=K.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&K.clear(r)},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.setNodesHandler=function(e){e.setRenderer(this),P=e},this.dispose=function(){n.removeEventListener(`webglcontextlost`,Ye,!1),n.removeEventListener(`webglcontextrestored`,Xe,!1),n.removeEventListener(`webglcontextcreationerror`,Ze,!1),Ve.dispose(),Le.dispose(),Re.dispose(),Y.dispose(),je.dispose(),Pe.dispose(),Ke.dispose(),qe.dispose(),Fe.dispose(),Z.dispose(),Z.removeEventListener(`sessionstart`,at),Z.removeEventListener(`sessionend`,ot),st.stop()};function Ye(e){e.preventDefault(),t.Pn(`WebGLRenderer: Context Lost.`),ee=!0}function Xe(){t.Pn(`WebGLRenderer: Context Restored.`),ee=!1;let e=Ae.autoReset,n=Be.enabled,r=Be.autoUpdate,i=Be.needsUpdate,a=Be.type;Je(),Ae.autoReset=e,Be.enabled=n,Be.autoUpdate=r,Be.needsUpdate=i,Be.type=a}function Ze(e){t.jn(`WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function Qe(e){let t=e.target;t.removeEventListener(`dispose`,Qe),$e(t)}function $e(e){et(e),Y.remove(e)}function et(e){let t=Y.get(e).programs;t!==void 0&&(t.forEach(function(e){Fe.releaseProgram(e)}),e.isShaderMaterial&&Fe.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=Te);let o=i.isMesh&&i.matrixWorld.determinantAffine()<0,s=_t(e,t,n,r,i);J.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=Ne.getWireframeAttribute(n),c===void 0)return;l=2}let u=n.drawRange,d=n.attributes.position,f=u.start*l,p=(u.start+u.count)*l;a!==null&&(f=Math.max(f,a.start*l),p=Math.min(p,(a.start+a.count)*l)),c===null?d!=null&&(f=Math.max(f,0),p=Math.min(p,d.count)):(f=Math.max(f,0),p=Math.min(p,c.count));let m=p-f;if(m<0||m===1/0)return;Ke.setup(i,r,s,n,c);let h,g=Ue;if(c!==null&&(h=Me.get(c),g=We,g.setIndex(h)),i.isMesh)r.wireframe===!0?(J.setLineWidth(r.wireframeLinewidth*De()),g.setMode(K.LINES)):g.setMode(K.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),J.setLineWidth(e*De()),i.isLineSegments?g.setMode(K.LINES):i.isLineLoop?g.setMode(K.LINE_LOOP):g.setMode(K.LINE_STRIP)}else i.isPoints?g.setMode(K.POINTS):i.isSprite&&g.setMode(K.TRIANGLES);if(i.isBatchedMesh){if(q.get(`WEBGL_multi_draw`))g.renderMultiDraw(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount);else{let e=i._multiDrawStarts,t=i._multiDrawCounts,n=i._multiDrawCount,a=c?Me.get(c).bytesPerElement:1,o=Y.get(r).currentProgram.getUniforms();for(let r=0;r<n;r++)o.setValue(K,`_gl_DrawID`,r),g.render(e[r]/a,t[r])}}else if(i.isInstancedMesh)g.renderInstances(f,m,i.count);else if(n.isInstancedBufferGeometry){let e=n._maxInstanceCount===void 0?1/0:n._maxInstanceCount,t=Math.min(n.instanceCount,e);g.renderInstances(f,m,t)}else g.render(f,m)};function tt(e,t,n,r){P!==null&&e.isNodeMaterial&&P.setObject(r,e),be===!0&&ze.setState(e,n,!1),e.transparent===!0&&e.side===2&&e.forceSinglePass===!1?(e.side=1,e.needsUpdate=!0,pt(e,t,r),e.side=0,e.needsUpdate=!0,pt(e,t,r),e.side=2):pt(e,t,r)}this.compile=function(e,t,n=null){n===null&&(n=e),P!==null&&P.renderStart(e,t,n),k=Re.get(n),k.init(t),j.push(k),n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),e!==n&&e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),k.setupLights(),P!==null&&P.updateLights(k.state.lightsArray),xe=this.localClippingEnabled,be=ze.init(this.clippingPlanes,xe),be===!0&&ze.setGlobalState(this.clippingPlanes,t),P!==null&&Be.render(k.state.shadowsArray,n,t);let r=new Set;return e.traverse(function(e){if(!(e.isMesh||e.isPoints||e.isLine||e.isSprite))return;let i=e.material;if(i){if(Array.isArray(i))for(let a=0;a<i.length;a++){let o=i[a];tt(o,n,t,e),r.add(o)}else tt(i,n,t,e),r.add(i)}}),k=j.pop(),P!==null&&P.renderEnd(),r},this.compileAsync=function(e,t,n=null){let r=this.compile(e,t,n);return new Promise(t=>{function n(){if(r.forEach(function(e){let t=Y.get(e).currentProgram;(t===void 0||t.isReady())&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}q.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let rt=null;function it(e){rt&&rt(e)}function at(){st.stop()}function ot(){st.start()}let st=new i;st.setAnimationLoop(it),typeof self<`u`&&st.setContext(self),this.setAnimationLoop=function(e){rt=e,Z.setAnimationLoop(e),e===null?st.stop():st.start()},Z.addEventListener(`sessionstart`,at),Z.addEventListener(`sessionend`,ot),this.render=function(e,n){if(n!==void 0&&n.isCamera!==!0){t.jn(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(ee===!0)return;P!==null&&P.renderStart(e,n);let r=Z.enabled===!0&&Z.isPresenting===!0,i=M!==null&&(B===null||r)&&M.begin(N,B);if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),n.parent===null&&n.matrixWorldAutoUpdate===!0&&n.updateMatrixWorld(),Z.enabled===!0&&Z.isPresenting===!0&&(M===null||M.isCompositing()===!1)&&(Z.cameraAutoUpdate===!0&&Z.updateCamera(n),n=Z.getCamera()),e.isScene===!0&&e.onBeforeRender(N,e,n,B),k=Re.get(e,j.length),k.init(n),k.state.textureUnits=X.getTextureUnits(),j.push(k),Se.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),ye.setFromProjectionMatrix(Se,t.Tn,n.reversedDepth),xe=this.localClippingEnabled,be=ze.init(this.clippingPlanes,xe),O=Le.get(e,A.length),O.init(),A.push(O),Z.enabled===!0&&Z.isPresenting===!0){let e=N.xr.getDepthSensingMesh();e!==null&&ct(e,n,-1/0,N.sortObjects)}ct(e,n,0,N.sortObjects),O.finish(),P!==null&&P.updateLights(k.state.lightsArray),N.sortObjects===!0&&O.sort(G,he),Ee=Z.enabled===!1||Z.isPresenting===!1||Z.hasDepthSensing()===!1,Ee&&Ve.addToRenderList(O,e),this.info.render.frame++,this.info.autoReset===!0&&this.info.reset(),be===!0&&ze.beginShadows();let a=k.state.shadowsArray;if(Be.render(a,e,n),be===!0&&ze.endShadows(),(i&&M.hasRenderPass())===!1){let t=O.opaque,r=O.transmissive;if(k.setupLights(),n.isArrayCamera){let i=n.cameras;if(r.length>0)for(let n=0,a=i.length;n<a;n++){let a=i[n];ut(t,r,e,a)}Ee&&Ve.render(e);for(let t=0,n=i.length;t<n;t++){let n=i[t];lt(O,e,n,n.viewport)}}else r.length>0&&ut(t,r,e,n),Ee&&Ve.render(e),lt(O,e,n)}B!==null&&z===0&&(X.updateMultisampleRenderTarget(B),X.updateRenderTargetMipmap(B)),i&&M.end(N),e.isScene===!0&&e.onAfterRender(N,e,n),Ke.resetDefaultState(),V=-1,le=null,j.pop(),j.length>0?(k=j[j.length-1],X.setTextureUnits(k.state.textureUnits),be===!0&&ze.setGlobalState(N.clippingPlanes,k.state.camera)):k=null,A.pop(),O=A.length>0?A[A.length-1]:null,P!==null&&P.renderEnd()};function ct(e,t,n,r){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLightProbeGrid)k.pushLightProbeGrid(e);else if(e.isLight)k.pushLight(e),e.castShadow&&k.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||e.intersectsFrustum(ye)){r&&we.setFromMatrixPosition(e.matrixWorld).applyMatrix4(Se);let i=Pe.update(e),a=e.material;a.visible&&O.push(e,i,a,n,we.z,null,t)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||e.intersectsFrustum(ye))){let i=Pe.update(e),a=e.material;if(r&&(e.boundingSphere===void 0?(i.boundingSphere===null&&i.computeBoundingSphere(),we.copy(i.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),we.copy(e.boundingSphere.center)),we.applyMatrix4(e.matrixWorld).applyMatrix4(Se)),Array.isArray(a)){let r=i.groups;for(let o=0,s=r.length;o<s;o++){let s=r[o],c=a[s.materialIndex];c&&c.visible&&O.push(e,i,c,n,we.z,s,t)}}else a.visible&&O.push(e,i,a,n,we.z,null,t)}}let i=e.children;for(let e=0,a=i.length;e<a;e++)ct(i[e],t,n,r)}function lt(e,t,n,r){let{opaque:i,transmissive:a,transparent:o}=e;k.setupLightsView(n),be===!0&&ze.setGlobalState(N.clippingPlanes,n),r&&J.viewport(H.copy(r)),i.length>0&&dt(i,t,n),a.length>0&&dt(a,t,n),o.length>0&&dt(o,t,n),J.buffers.depth.setTest(!0),J.buffers.depth.setMask(!0),J.buffers.color.setMask(!0),J.setPolygonOffset(!1)}function ut(e,n,r,i){if((r.isScene===!0?r.overrideMaterial:null)!==null)return;if(k.state.transmissionRenderTarget[i.id]===void 0){let e=q.has(`EXT_color_buffer_half_float`)||q.has(`EXT_color_buffer_float`);k.state.transmissionRenderTarget[i.id]=new t.En(1,1,{generateMipmaps:!0,type:e?t.L:t.mn,minFilter:t.V,samples:Math.max(4,ke.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,storeMultisampledDepthBuffer:!1,storeMultisampledStencilBuffer:!1,colorSpace:t._.workingColorSpace})}let a=k.state.transmissionRenderTarget[i.id],o=i.viewport||H;a.setSize(o.z*N.transmissionResolutionScale,o.w*N.transmissionResolutionScale);let c=N.getRenderTarget(),l=N.getActiveCubeFace(),u=N.getActiveMipmapLevel();N.setRenderTarget(a),N.getClearColor(fe),pe=N.getClearAlpha(),pe<1&&N.setClearColor(16777215,.5),N.clear(),Ee&&Ve.render(r);let d=N.toneMapping;N.toneMapping=0;let f=i.viewport;if(i.viewport!==void 0&&(i.viewport=void 0),k.setupLightsView(i),be===!0&&ze.setGlobalState(N.clippingPlanes,i),dt(e,r,i),X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a),q.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let t=0,a=n.length;t<a;t++){let{object:a,geometry:o,material:s,group:c}=n[t];if(s.side===2&&a.layers.test(i.layers)){let t=s.side;s.side=1,s.needsUpdate=!0,ft(a,r,i,o,s,c),s.side=t,s.needsUpdate=!0,e=!0}}e===!0&&(X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a))}N.setRenderTarget(c,l,u),N.setClearColor(fe,pe),f!==void 0&&(i.viewport=f),N.toneMapping=d}function dt(e,t,n){let r=t.isScene===!0?t.overrideMaterial:null;for(let i=0,a=e.length;i<a;i++){let a=e[i],{object:o,geometry:s,group:c}=a,l=a.material;l.allowOverride===!0&&r!==null&&(l=r),o.layers.test(n.layers)&&ft(o,t,n,s,l,c)}}function ft(e,t,n,r,i,a){P!==null&&i.isNodeMaterial&&P.setObject(e,i),e.onBeforeRender(N,t,n,r,i,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),i.onBeforeRender(N,t,n,r,e,a),i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=0,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=2):N.renderBufferDirect(n,t,r,i,e,a),e.onAfterRender(N,t,n,r,i,a)}function pt(e,t,n){t.isScene!==!0&&(t=Te);let r=Y.get(e),i=k.state.lights,a=k.state.shadowsArray,o=i.state.version,s=Fe.getParameters(e,i.state,a,t,n,k.state.lightProbeGridArray),c=Fe.getProgramCacheKey(s),l=r.programs;r.environment=e.isMeshStandardMaterial||e.isMeshLambertMaterial||e.isMeshPhongMaterial?t.environment:null,r.fog=t.fog;let u=e.isMeshStandardMaterial||e.isMeshLambertMaterial&&!e.envMap||e.isMeshPhongMaterial&&!e.envMap;r.envMap=je.get(e.envMap||r.environment,u),r.envMapRotation=r.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation,l===void 0&&(e.addEventListener(`dispose`,Qe),l=new Map,r.programs=l);let d=l.get(c);if(d!==void 0){if(r.currentProgram===d&&r.lightsStateVersion===o)return ht(e,s),d}else s.uniforms=Fe.getUniforms(e),P!==null&&e.isNodeMaterial&&P.build(e,n,s),e.onBeforeCompile(s,N),d=Fe.acquireProgram(s,c),l.set(c,d),r.uniforms=s.uniforms;let f=r.uniforms;return(!e.isShaderMaterial&&!e.isRawShaderMaterial||e.clipping===!0)&&(f.clippingPlanes=ze.uniform),ht(e,s),r.needsLights=yt(e),r.lightsStateVersion=o,r.needsLights&&(f.ambientLightColor.value=i.state.ambient,f.lightProbe.value=i.state.probe,f.sunLights.value=i.state.sun,f.sunLightShadows.value=i.state.sunShadow,f.directionalLights.value=i.state.directional,f.directionalLightShadows.value=i.state.directionalShadow,f.spotLights.value=i.state.spot,f.spotLightShadows.value=i.state.spotShadow,f.rectAreaLights.value=i.state.rectArea,f.ltc_1.value=i.state.rectAreaLTC1,f.ltc_2.value=i.state.rectAreaLTC2,f.pointLights.value=i.state.point,f.pointLightShadows.value=i.state.pointShadow,f.hemisphereLights.value=i.state.hemi,f.sunShadowMatrix.value=i.state.sunShadowMatrix,f.sunShadowCascade.value=i.state.sunShadowCascade,f.directionalShadowMatrix.value=i.state.directionalShadowMatrix,f.spotLightMatrix.value=i.state.spotLightMatrix,f.spotLightMap.value=i.state.spotLightMap,f.pointShadowMatrix.value=i.state.pointShadowMatrix),r.lightProbeGrid=k.state.lightProbeGridArray.length>0,r.currentProgram=d,r.uniformsList=null,d}function mt(e){if(e.uniformsList===null){let t=e.currentProgram.getUniforms();e.uniformsList=nt.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function ht(e,t){let n=Y.get(e);n.outputColorSpace=t.outputColorSpace,n.batching=t.batching,n.batchingColor=t.batchingColor,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.instancingMorph=t.instancingMorph,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}function gt(e,t){if(e.length===0)return null;if(e.length===1)return e[0].texture===null?null:e[0];D.setFromMatrixPosition(t.matrixWorld);for(let t=0,n=e.length;t<n;t++){let n=e[t];if(n.texture!==null&&n.boundingBox.containsPoint(D))return n}return null}function _t(e,n,r,i,a){n.isScene!==!0&&(n=Te),X.resetTextureUnits();let o=n.fog,s=i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial?n.environment:null,c=B===null?N.outputColorSpace:B.isXRRenderTarget===!0?B.texture.colorSpace:t._.workingColorSpace,l=i.isMeshStandardMaterial||i.isMeshLambertMaterial&&!i.envMap||i.isMeshPhongMaterial&&!i.envMap,u=je.get(i.envMap||s,l),d=i.vertexColors===!0&&!!r.attributes.color&&r.attributes.color.itemSize===4,f=!!r.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),p=!!r.morphAttributes.position,m=!!r.morphAttributes.normal,h=!!r.morphAttributes.color,g=0;i.toneMapped&&(B===null||B.isXRRenderTarget===!0)&&(g=N.toneMapping);let _=r.morphAttributes.position||r.morphAttributes.normal||r.morphAttributes.color,v=_===void 0?0:_.length,y=Y.get(i),b=k.state.lights;if(be===!0&&(xe===!0||e!==le)){let t=e===le&&i.id===V;ze.setState(i,e,t)}let x=!1;i.version===y.__version?y.needsLights&&y.lightsStateVersion!==b.state.version?x=!0:y.outputColorSpace===c?a.isBatchedMesh&&y.batching===!1||!a.isBatchedMesh&&y.batching===!0||a.isBatchedMesh&&y.batchingColor===!0&&a._colorsTexture===null||a.isBatchedMesh&&y.batchingColor===!1&&a._colorsTexture!==null||a.isInstancedMesh&&y.instancing===!1||!a.isInstancedMesh&&y.instancing===!0||a.isSkinnedMesh&&y.skinning===!1||!a.isSkinnedMesh&&y.skinning===!0||a.isInstancedMesh&&y.instancingColor===!0&&a.instanceColor===null||a.isInstancedMesh&&y.instancingColor===!1&&a.instanceColor!==null||a.isInstancedMesh&&y.instancingMorph===!0&&a.morphTexture===null||a.isInstancedMesh&&y.instancingMorph===!1&&a.morphTexture!==null?x=!0:y.envMap===u?i.fog===!0&&y.fog!==o||y.numClippingPlanes!==void 0&&(y.numClippingPlanes!==ze.numPlanes||y.numIntersection!==ze.numIntersection)?x=!0:y.vertexAlphas===d&&y.vertexTangents===f&&y.morphTargets===p&&y.morphNormals===m&&y.morphColors===h&&y.toneMapping===g&&y.morphTargetsCount===v?!!y.lightProbeGrid!=k.state.lightProbeGridArray.length>0&&(x=!0):x=!0:x=!0:x=!0:(x=!0,y.__version=i.version);let S=y.currentProgram;x===!0&&(S=pt(i,n,a),P&&i.isNodeMaterial&&P.onUpdateProgram(i,S,y));let C=!1,w=!1,T=!1,E=S.getUniforms(),D=y.uniforms;if(J.useProgram(S.program)&&(C=!0,w=!0,T=!0),i.id!==V&&(V=i.id,w=!0),y.needsLights){let e=gt(k.state.lightProbeGridArray,a);y.lightProbeGrid!==e&&(y.lightProbeGrid=e,w=!0)}if(C||le!==e){J.buffers.depth.getReversed()&&e.reversedDepth!==!0&&(e._reversedDepth=!0,e.updateProjectionMatrix()),E.setValue(K,`projectionMatrix`,e.projectionMatrix),E.setValue(K,`viewMatrix`,e.matrixWorldInverse);let t=E.map.cameraPosition;t!==void 0&&t.setValue(K,Ce.setFromMatrixPosition(e.matrixWorld)),ke.logarithmicDepthBuffer&&E.setValue(K,`logDepthBufFC`,2/(Math.log(e.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&E.setValue(K,`isOrthographic`,e.isOrthographicCamera===!0),le!==e&&(le=e,w=!0,T=!0)}if(y.needsLights&&(b.state.sunShadowMap.length>0&&E.setValue(K,`sunShadowMap`,b.state.sunShadowMap,X),b.state.directionalShadowMap.length>0&&E.setValue(K,`directionalShadowMap`,b.state.directionalShadowMap,X),b.state.spotShadowMap.length>0&&E.setValue(K,`spotShadowMap`,b.state.spotShadowMap,X),b.state.pointShadowMap.length>0&&E.setValue(K,`pointShadowMap`,b.state.pointShadowMap,X)),a.isSkinnedMesh){E.setOptional(K,a,`bindMatrix`),E.setOptional(K,a,`bindMatrixInverse`);let e=a.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),E.setValue(K,`boneTexture`,e.boneTexture,X))}a.isBatchedMesh&&(E.setOptional(K,a,`batchingTexture`),E.setValue(K,`batchingTexture`,a._matricesTexture,X),E.setOptional(K,a,`batchingIdTexture`),E.setValue(K,`batchingIdTexture`,a._indirectTexture,X),E.setOptional(K,a,`batchingColorTexture`),a._colorsTexture!==null&&E.setValue(K,`batchingColorTexture`,a._colorsTexture,X));let O=r.morphAttributes;if((O.position!==void 0||O.normal!==void 0||O.color!==void 0)&&He.update(a,r,S),(w||y.receiveShadow!==a.receiveShadow)&&(y.receiveShadow=a.receiveShadow,E.setValue(K,`receiveShadow`,a.receiveShadow)),(i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial)&&i.envMap===null&&n.environment!==null&&(D.envMapIntensity.value=n.environmentIntensity),D.dfgLUT!==void 0&&(D.dfgLUT.value=wn()),w){if(E.setValue(K,`toneMappingExposure`,N.toneMappingExposure),y.needsLights&&vt(D,T),o&&i.fog===!0&&Ie.refreshFogUniforms(D,o),Ie.refreshMaterialUniforms(D,i,W,U,k.state.transmissionRenderTarget[e.id]),y.needsLights&&y.lightProbeGrid){let e=y.lightProbeGrid;D.probesSH.value=e.texture,D.probesMin.value.copy(e.boundingBox.min),D.probesMax.value.copy(e.boundingBox.max),D.probesResolution.value.copy(e.resolution)}nt.upload(K,mt(y),D,X)}if(i.isShaderMaterial&&i.uniformsNeedUpdate===!0&&(nt.upload(K,mt(y),D,X),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&E.setValue(K,`center`,a.center),E.setValue(K,`modelViewMatrix`,a.modelViewMatrix),E.setValue(K,`normalMatrix`,a.normalMatrix),E.setValue(K,`modelMatrix`,a.matrixWorld),i.uniformsGroups!==void 0){let e=i.uniformsGroups;for(let t=0,n=e.length;t<n;t++){let n=e[t];qe.update(n,S),qe.bind(n,S)}}return S}function vt(e,t){e.ambientLightColor.needsUpdate=t,e.lightProbe.needsUpdate=t,e.sunLights.needsUpdate=t,e.sunLightShadows.needsUpdate=t,e.directionalLights.needsUpdate=t,e.directionalLightShadows.needsUpdate=t,e.pointLights.needsUpdate=t,e.pointLightShadows.needsUpdate=t,e.spotLights.needsUpdate=t,e.spotLightShadows.needsUpdate=t,e.rectAreaLights.needsUpdate=t,e.hemisphereLights.needsUpdate=t}function yt(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&e.lights===!0}this.getActiveCubeFace=function(){return R},this.getActiveMipmapLevel=function(){return z},this.getRenderTarget=function(){return B},this.setRenderTargetTextures=function(e,t,n){let r=Y.get(e);r.__autoAllocateDepthBuffer=e.resolveDepthBuffer===!1,r.__autoAllocateDepthBuffer===!1&&(r.__useRenderToTexture=!1),Y.get(e.texture).__webglTexture=t,Y.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:n,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,t){let n=Y.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=t===void 0},this.setRenderTarget=function(e,t=0,n=0){B=e,R=t,z=n;let r=null,i=!1,a=!1;if(e){let o=Y.get(e);if(o.__useDefaultFramebuffer!==void 0){J.bindFramebuffer(K.FRAMEBUFFER,o.__webglFramebuffer),H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest,J.viewport(H),J.scissor(ue),J.setScissorTest(de),V=-1;return}if(o.__webglFramebuffer===void 0)X.setupRenderTarget(e);else if(o.__hasExternalTextures)X.rebindTextures(e,Y.get(e.texture).__webglTexture,Y.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(o.__boundDepthTexture!==t){if(t!==null&&Y.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error(`THREE.WebGLRenderer: Attached DepthTexture is initialized to the incorrect size.`);X.setupDepthRenderbuffer(e)}}let s=e.texture;(s.isData3DTexture||s.isDataArrayTexture||s.isCompressedArrayTexture)&&(a=!0);let c=Y.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][n]:c[t],i=!0):r=e.samples>0&&X.useMultisampledRTT(e)===!1?Y.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest}else H.copy(ge).multiplyScalar(W).floor(),ue.copy(_e).multiplyScalar(W).floor(),de=ve;if(n!==0&&(r=te),J.bindFramebuffer(K.FRAMEBUFFER,r)&&J.drawBuffers(e,r),J.viewport(H),J.scissor(ue),J.setScissorTest(de),i){let r=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(a){let r=t;for(let t=0;t<e.textures.length;t++){let i=Y.get(e.textures[t]);K.framebufferTextureLayer(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,t.__webglTexture,n)}V=-1};function bt(e){let t=Y.get(e);return(t.__readFormat!==e.format||t.__readType!==e.type)&&(t.__readFormat=e.format,t.__readType=e.type,t.__formatReadable=ke.textureFormatReadable(e.format),t.__typeReadable=ke.textureTypeReadable(e.type)),t}this.readRenderTargetPixels=function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget)){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){J.bindFramebuffer(K.FRAMEBUFFER,l);try{let s=e.textures[c],l=s.format,u=s.type;e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c);let d=bt(s);if(d.__formatReadable===!1){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(d.__typeReadable===!1){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a&&K.readPixels(n,r,i,a,Ge.convert(l),Ge.convert(u),o)}finally{let e=B===null?null:Y.get(B).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){if(n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a){J.bindFramebuffer(K.FRAMEBUFFER,l);let s=e.textures[c],u=s.format,d=s.type;e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c);let f=bt(s);if(f.__formatReadable===!1)throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(f.__typeReadable===!1)throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let p=K.createBuffer();K.bindBuffer(K.PIXEL_PACK_BUFFER,p),K.bufferData(K.PIXEL_PACK_BUFFER,o.byteLength,K.STREAM_READ),K.readPixels(n,r,i,a,Ge.convert(u),Ge.convert(d),0),K.bindBuffer(K.PIXEL_PACK_BUFFER,null);let m=B===null?null:Y.get(B).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,m);let h=K.fenceSync(K.SYNC_GPU_COMMANDS_COMPLETE,0);return K.flush(),await t.In(K,h,4),K.bindBuffer(K.PIXEL_PACK_BUFFER,p),K.getBufferSubData(K.PIXEL_PACK_BUFFER,0,o),K.bindBuffer(K.PIXEL_PACK_BUFFER,null),K.deleteBuffer(p),K.deleteSync(h),o}throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)}},this.copyFramebufferToTexture=function(e,t=null,n=0){let r=2**-n,i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=t===null?0:t.x,s=t===null?0:t.y;X.setTexture2D(e,0),K.copyTexSubImage2D(K.TEXTURE_2D,n,0,0,o,s,i,a),J.unbindTexture()},this.copyTextureToTexture=function(e,t,n=null,r=null,i=0,a=0){let o,s,c,l,u,d,f,p,m,h=e.isCompressedTexture?e.mipmaps[a]:e.image;if(n!==null)o=n.max.x-n.min.x,s=n.max.y-n.min.y,c=n.isBox3?n.max.z-n.min.z:1,l=n.min.x,u=n.min.y,d=n.isBox3?n.min.z:0;else{let t=2**-i;o=Math.floor(h.width*t),s=Math.floor(h.height*t),c=e.isDataArrayTexture?h.depth:e.isData3DTexture?Math.floor(h.depth*t):1,l=0,u=0,d=0}r===null?(f=0,p=0,m=0):(f=r.x,p=r.y,m=r.z);let g=Ge.convert(t.format),_=Ge.convert(t.type),v;t.isData3DTexture?(X.setTexture3D(t,0),v=K.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(X.setTexture2DArray(t,0),v=K.TEXTURE_2D_ARRAY):(X.setTexture2D(t,0),v=K.TEXTURE_2D),J.activeTexture(K.TEXTURE0),J.pixelStorei(K.UNPACK_FLIP_Y_WEBGL,t.flipY),J.pixelStorei(K.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),J.pixelStorei(K.UNPACK_ALIGNMENT,t.unpackAlignment);let y=J.getParameter(K.UNPACK_ROW_LENGTH),b=J.getParameter(K.UNPACK_IMAGE_HEIGHT),x=J.getParameter(K.UNPACK_SKIP_PIXELS),S=J.getParameter(K.UNPACK_SKIP_ROWS),C=J.getParameter(K.UNPACK_SKIP_IMAGES);J.pixelStorei(K.UNPACK_ROW_LENGTH,h.width),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,h.height),J.pixelStorei(K.UNPACK_SKIP_PIXELS,l),J.pixelStorei(K.UNPACK_SKIP_ROWS,u),J.pixelStorei(K.UNPACK_SKIP_IMAGES,d);let w=e.isDataArrayTexture||e.isData3DTexture,T=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=Y.get(e),r=Y.get(t),h=Y.get(n.__renderTarget),g=Y.get(r.__renderTarget);J.bindFramebuffer(K.READ_FRAMEBUFFER,h.__webglFramebuffer),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(e).__webglTexture,i,d+n),K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(t).__webglTexture,a,m+n)),K.blitFramebuffer(l,u,o,s,f,p,o,s,K.DEPTH_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Y.has(e)){let n=Y.get(e),r=Y.get(t);J.bindFramebuffer(K.READ_FRAMEBUFFER,F),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,ne);for(let e=0;e<c;e++)w?K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):K.framebufferTexture2D(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,n.__webglTexture,i),T?K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):K.framebufferTexture2D(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,r.__webglTexture,a),i===0?T?K.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):K.copyTexSubImage2D(v,a,f,p,l,u,o,s):K.blitFramebuffer(l,u,o,s,f,p,o,s,K.COLOR_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?K.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?K.compressedTexSubImage2D(K.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h);J.pixelStorei(K.UNPACK_ROW_LENGTH,y),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,b),J.pixelStorei(K.UNPACK_SKIP_PIXELS,x),J.pixelStorei(K.UNPACK_SKIP_ROWS,S),J.pixelStorei(K.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&K.generateMipmap(v),J.unbindTexture()},this.initRenderTarget=function(e){Y.get(e).__webglFramebuffer===void 0&&X.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?X.setTextureCube(e,0):e.isData3DTexture?X.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?X.setTexture2DArray(e,0):X.setTexture2D(e,0),J.unbindTexture()},this.resetState=function(){R=0,z=0,B=null,J.reset(),Ke.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return t.Tn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let n=this.getContext();n.drawingBufferColorSpace=t._._getDrawingBufferColorSpace(e),n.unpackColorSpace=t._._getUnpackColorSpace()}},En={type:`change`},Dn={type:`start`},On={type:`end`},kn=new t.Jt,An=new t.at,jn=Math.cos(70*t.K.DEG2RAD),Q=new t.Cn,Mn=2*Math.PI,$={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Nn=1e-6,Pn=class extends t.v{constructor(e,n=null){super(e,n),this.state=$.NONE,this.target=new t.Cn,this.cursor=new t.Cn,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:`ArrowLeft`,UP:`ArrowUp`,RIGHT:`ArrowRight`,BOTTOM:`ArrowDown`},this.mouseButtons={LEFT:t.G.ROTATE,MIDDLE:t.G.DOLLY,RIGHT:t.G.PAN},this.touches={ONE:t.ln.ROTATE,TWO:t.ln.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle=`auto`,this._domElementKeyEvents=null,this._lastPosition=new t.Cn,this._lastQuaternion=new t.ct,this._lastTargetPosition=new t.Cn,this._quat=new t.ct().setFromUnitVectors(e.up,new t.Cn(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new t.cn,this._sphericalDelta=new t.cn,this._scale=1,this._panOffset=new t.Cn,this._rotateStart=new t.Sn,this._rotateEnd=new t.Sn,this._rotateDelta=new t.Sn,this._panStart=new t.Sn,this._panEnd=new t.Sn,this._panDelta=new t.Sn,this._dollyStart=new t.Sn,this._dollyEnd=new t.Sn,this._dollyDelta=new t.Sn,this._dollyDirection=new t.Cn,this._mouse=new t.Sn,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=In.bind(this),this._onPointerDown=Fn.bind(this),this._onPointerUp=Ln.bind(this),this._onContextMenu=Wn.bind(this),this._onMouseWheel=Bn.bind(this),this._onKeyDown=Vn.bind(this),this._onTouchStart=Hn.bind(this),this._onTouchMove=Un.bind(this),this._onMouseDown=Rn.bind(this),this._onMouseMove=zn.bind(this),this._interceptControlDown=Gn.bind(this),this._interceptControlUp=Kn.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e===`grab`?this.domElement.style.cursor=`grab`:this.domElement.style.cursor=`auto`}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener(`pointerdown`,this._onPointerDown),this.domElement.addEventListener(`pointercancel`,this._onPointerUp),this.domElement.addEventListener(`contextmenu`,this._onContextMenu),this.domElement.addEventListener(`wheel`,this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener(`keydown`,this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction=`none`}disconnect(){this.state=$.NONE,this.domElement.removeEventListener(`pointerdown`,this._onPointerDown),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.domElement.removeEventListener(`pointercancel`,this._onPointerUp),this.domElement.removeEventListener(`wheel`,this._onMouseWheel),this.domElement.removeEventListener(`contextmenu`,this._onContextMenu),this.stopListenToKeyEvents();let e=this.domElement.getRootNode();e.removeEventListener(`keydown`,this._interceptControlDown,{capture:!0}),e.removeEventListener(`keyup`,this._interceptControlUp,{capture:!0}),this._controlActive=!1,this._pointers.length=0,this._pointerPositions={},this.domElement.style.touchAction=``,this.domElement.style.cursor=`auto`}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(En),this.update(),this.state=$.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let n=this.object.position;Q.copy(n).sub(this.target),Q.applyQuaternion(this._quat),this._spherical.setFromVector3(Q),this.autoRotate&&this.state===$.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let r=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(r)&&isFinite(i)&&(r<-Math.PI?r+=Mn:r>Math.PI&&(r-=Mn),i<-Math.PI?i+=Mn:i>Math.PI&&(i-=Mn),r<=i?this._spherical.theta=Math.max(r,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(r+i)/2?Math.max(r,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),a=e!=this._spherical.radius}if(Q.setFromSpherical(this._spherical),Q.applyQuaternion(this._quatInverse),n.copy(this.target).add(Q),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){let t=Q.length();e=this._clampDistance(t*this._scale);let n=t-e;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=!!n}else if(this.object.isOrthographicCamera){let n=new t.Cn(this._mouse.x,this._mouse.y,0);n.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),a=r!==this.object.zoom;let i=new t.Cn(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),e=Q.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;e!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(kn.origin.copy(this.object.position),kn.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(kn.direction))<jn?this.object.lookAt(this.target):(An.setFromNormalAndCoplanarPoint(this.object.up,this.target),kn.intersectPlane(An,this.target))))}else if(this.object.isOrthographicCamera){let e=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),e!==this.object.zoom&&(this.object.updateProjectionMatrix(),a=!0)}return this._scale=1,this._performCursorZoom=!1,a||this._lastPosition.distanceToSquared(this.object.position)>Nn||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Nn||this._lastTargetPosition.distanceToSquared(this.target)>Nn?(this.dispatchEvent(En),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?Mn/60/60*this.autoRotateSpeed:Mn/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){Q.setFromMatrixColumn(t,0),Q.multiplyScalar(-e),this._panOffset.add(Q)}_panUp(e,t){this.screenSpacePanning===!0?Q.setFromMatrixColumn(t,1):(Q.setFromMatrixColumn(t,0),Q.crossVectors(this.object.up,Q)),Q.multiplyScalar(e),this._panOffset.add(Q)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;Q.copy(r).sub(this.target);let i=Q.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*i/n.clientHeight,this.object.matrix),this._panUp(2*t*i/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Mn*this._rotateDelta.x/t.clientHeight),this._rotateUp(Mn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Mn*this._rotateDelta.x/t.clientHeight),this._rotateUp(Mn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let n=this._pointerPositions[e.pointerId];n===void 0&&(n=new t.Sn,this._pointerPositions[e.pointerId]=n),n.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}};function Fn(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.ownerDocument.addEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.addEventListener(`pointerup`,this._onPointerUp)),!this._isTrackingPointer(e)&&(this._addPointer(e),e.pointerType===`touch`?this._onTouchStart(e):this._onMouseDown(e),this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grabbing`)))}function In(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function Ln(e){switch(this._removePointer(e),this._pointers.length){case 0:this.domElement.releasePointerCapture(e.pointerId),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.dispatchEvent(On),this.state=$.NONE,this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grab`);break;case 1:let t=this._pointers[0],n=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:n.x,pageY:n.y})}}function Rn(e){let n;switch(e.button){case 0:n=this.mouseButtons.LEFT;break;case 1:n=this.mouseButtons.MIDDLE;break;case 2:n=this.mouseButtons.RIGHT;break;default:n=-1}switch(n){case t.G.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(e),this.state=$.DOLLY;break;case t.G.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}break;case t.G.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Dn)}function zn(e){switch(this.state){case $.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(e);break;case $.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(e);break;case $.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(e)}}function Bn(e){this.enabled!==!1&&this.enableZoom!==!1&&this.state===$.NONE&&(e.preventDefault(),this.dispatchEvent(Dn),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(On))}function Vn(e){this.enabled!==!1&&this._handleKeyDown(e)}function Hn(e){switch(this._trackPointer(e),this._pointers.length){case 1:switch(this.touches.ONE){case t.ln.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(e),this.state=$.TOUCH_ROTATE;break;case t.ln.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(e),this.state=$.TOUCH_PAN;break;default:this.state=$.NONE}break;case 2:switch(this.touches.TWO){case t.ln.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(e),this.state=$.TOUCH_DOLLY_PAN;break;case t.ln.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(e),this.state=$.TOUCH_DOLLY_ROTATE;break;default:this.state=$.NONE}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Dn)}function Un(e){switch(this._trackPointer(e),this.state){case $.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(e),this.update();break;case $.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(e),this.update();break;case $.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(e),this.update();break;case $.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=$.NONE}}function Wn(e){this.enabled!==!1&&e.preventDefault()}function Gn(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function Kn(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var qn=(0,r.createUseT)({de:{untitled:`3D-Visualisierung`,resetCamera:`Kamera zurücksetzen`,wireframe:`Drahtgitter`,grid:`Raster`,parseError:`Syntaxfehler:`,editSource:`ShapeScript-Quelltext bearbeiten`,scriptEditorLabel:`ShapeScript-Quelltext`,applyChanges:`Änderungen übernehmen`,saveError:`Speichern fehlgeschlagen:`,downloadUsdz:`USDZ herunterladen`,exportError:`Export fehlgeschlagen:`,sceneWarnings:`Nicht gerendert:`,printOutput:`Ausgabe:`},en:{untitled:`3D Visualization`,resetCamera:`Reset Camera`,wireframe:`Wireframe`,grid:`Grid`,parseError:`Parse Error:`,editSource:`Edit ShapeScript Source`,scriptEditorLabel:`ShapeScript source`,applyChanges:`Apply Changes`,saveError:`Save Failed:`,downloadUsdz:`Download USDZ`,exportError:`Export Failed:`,sceneWarnings:`Not rendered:`,printOutput:`Output:`},es:{untitled:`Visualización 3D`,resetCamera:`Restablecer cámara`,wireframe:`Malla`,grid:`Cuadrícula`,parseError:`Error de sintaxis:`,editSource:`Editar el código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar cambios`,saveError:`Error al guardar:`,downloadUsdz:`Descargar USDZ`,exportError:`Error al exportar:`,sceneWarnings:`No renderizado:`,printOutput:`Salida:`},fr:{untitled:`Visualisation 3D`,resetCamera:`Réinitialiser la caméra`,wireframe:`Fil de fer`,grid:`Grille`,parseError:`Erreur de syntaxe :`,editSource:`Modifier le code ShapeScript`,scriptEditorLabel:`Code ShapeScript`,applyChanges:`Appliquer les modifications`,saveError:`Échec de l'enregistrement :`,downloadUsdz:`Télécharger USDZ`,exportError:`Échec de l'export :`,sceneWarnings:`Non rendu :`,printOutput:`Sortie :`},ja:{untitled:`3D ビジュアライゼーション`,resetCamera:`カメラをリセット`,wireframe:`ワイヤーフレーム`,grid:`グリッド`,parseError:`構文エラー:`,editSource:`ShapeScript を編集`,scriptEditorLabel:`ShapeScript ソース`,applyChanges:`変更を適用`,saveError:`保存に失敗しました:`,downloadUsdz:`USDZ をダウンロード`,exportError:`エクスポートに失敗しました:`,sceneWarnings:`描画されないもの:`,printOutput:`出力:`},ko:{untitled:`3D 시각화`,resetCamera:`카메라 초기화`,wireframe:`와이어프레임`,grid:`격자`,parseError:`구문 오류:`,editSource:`ShapeScript 소스 편집`,scriptEditorLabel:`ShapeScript 소스`,applyChanges:`변경사항 적용`,saveError:`저장 실패:`,downloadUsdz:`USDZ 다운로드`,exportError:`내보내기 실패:`,sceneWarnings:`렌더링되지 않음:`,printOutput:`출력:`},"pt-BR":{untitled:`Visualização 3D`,resetCamera:`Redefinir câmera`,wireframe:`Aramado`,grid:`Grade`,parseError:`Erro de sintaxe:`,editSource:`Editar o código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar alterações`,saveError:`Falha ao salvar:`,downloadUsdz:`Baixar USDZ`,exportError:`Falha na exportação:`,sceneWarnings:`Não renderizado:`,printOutput:`Saída:`},zh:{untitled:`3D 可视化`,resetCamera:`重置相机`,wireframe:`线框`,grid:`网格`,parseError:`语法错误:`,editSource:`编辑 ShapeScript 源码`,scriptEditorLabel:`ShapeScript 源码`,applyChanges:`应用更改`,saveError:`保存失败:`,downloadUsdz:`下载 USDZ`,exportError:`导出失败:`,sceneWarnings:`未渲染:`,printOutput:`输出:`}}),Jn={class:`present3d-container`,"data-testid":`shapescript-view`},Yn={class:`header`},Xn={class:`controls`},Zn={class:`material-icons`},Qn={class:`material-icons`},$n=[`disabled`],er={key:0,class:`error`,"data-testid":`shapescript-parse-error`},tr={key:1,class:`error`,"data-testid":`shapescript-save-error`},nr={key:2,class:`error`,"data-testid":`shapescript-export-error`},rr={key:3,class:`notice`,"data-testid":`shapescript-warnings`},ir={key:4,class:`notice output`,"data-testid":`shapescript-output`},ar={class:`script-source`},or=[`aria-label`],sr=[`disabled`],cr=1710618,lr=6e4,ur=(0,n.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(i,{emit:a}){function o(e){if(typeof e!=`object`||!e)return null;let{x:t,y:n,z:r}=e,i=e=>typeof e==`number`&&Number.isFinite(e);return i(t)&&i(n)&&i(r)?{x:t,y:n,z:r}:null}let s=i,c=a,l=qn(),{dispatch:u}=(0,r.useRuntime)(),d=(0,n.ref)(s.selectedResult.data?.script??``),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.ref)([]),h=(0,n.ref)([]),g=(0,n.ref)(null),_=(0,n.ref)(null),v=(0,n.ref)(!1),y=0,b=(0,n.ref)(!1),x=(0,n.ref)(!0),S=(0,n.computed)(()=>d.value!==s.selectedResult.data?.script),C=(0,n.computed)(()=>!v.value&&!p.value&&!S.value&&!!s.selectedResult.data?.script),w,T,E,D,O,k,A=[],j=null,M=null;(0,n.onMounted)(()=>{ee(),ne(),re(),(0,n.nextTick)(()=>{ae()}),N()});async function N(){let e=s.selectedResult.data?.filePath;if(!e)return;let n=++y;try{let{script:r}=await u({kind:`loadShape`,path:e},t.Hn);if(n!==y||r===s.selectedResult.data?.script)return;d.value=r,c(`updateResult`,{...s.selectedResult,data:{script:r,filePath:e}})}catch{}}(0,n.onUnmounted)(()=>{B()}),(0,n.watch)(()=>s.selectedResult.data?.script,()=>{ne()}),(0,n.watch)(b,()=>{ne()}),(0,n.watch)(x,e=>{k&&(k.visible=e)});function ee(){if(!f.value)return;w=new t.an,w.background=new t.g(cr);let e=f.value.clientWidth,n=f.value.clientHeight;T=new t.it(50,e/n,.1,1e3),T.position.set(5,5,10),T.lookAt(0,0,0),E=new Tn({antialias:!0}),E.setSize(e,n),E.setPixelRatio(window.devicePixelRatio),f.value.appendChild(E.domElement),D=new Pn(T,E.domElement),D.enableDamping=!0,D.dampingFactor=.05,D.addEventListener(`change`,I);let r=new t.l(16777215,.6);w.add(r);let i=new t.O(16777215,.8);i.position.set(10,10,10),w.add(i),k=new t.F(20,20,4473924,2236962),k.visible=x.value,w.add(k),window.addEventListener(`resize`,P),M=new ResizeObserver(()=>{P()}),M.observe(f.value)}function P(){if(!f.value)return;let e=f.value.clientWidth,t=f.value.clientHeight;T.aspect=e/t,T.updateProjectionMatrix(),E.setSize(e,t)}function te(){A.forEach(e=>t.o(w,e)),A=[]}function F(e){let n=t.r(t.s(e),{wireframe:b.value});w.add(n),A.push(n);let r=t.i(n);m.value=r.warnings,h.value=r.logs,w.background=r.background?new t.g(r.background[0],r.background[1],r.background[2]):new t.g(cr)}function ne(){try{te(),m.value=[],h.value=[],w.background=new t.g(cr);let e=s.selectedResult.data?.script;e&&F(e),p.value=null}catch(e){p.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function re(){O=requestAnimationFrame(re),D.update(),E.render(w,T)}function ie(){T.position.set(5,5,10),T.lookAt(0,0,0),D.reset()}function ae(){if(!T||!D||!s.selectedResult?.viewState?.cameraState)return;let e=s.selectedResult.viewState.cameraState,t=o(e.position);t&&T.position.set(t.x,t.y,t.z);let n=o(e.target);n&&D.target.set(n.x,n.y,n.z),T.updateProjectionMatrix(),D.update()}function oe(){return{position:{x:T.position.x,y:T.position.y,z:T.position.z},target:{x:D.target.x,y:D.target.y,z:D.target.z}}}function I(){j!==null&&clearTimeout(j),j=window.setTimeout(()=>{se()},500)}function se(){let e={...s.selectedResult,viewState:{...s.selectedResult.viewState,cameraState:oe()}};c(`updateResult`,e)}function L(t,n){let r=URL.createObjectURL(new Blob([t],{type:e.r})),i=document.createElement(`a`);i.href=r,i.download=n,i.click(),window.setTimeout(()=>URL.revokeObjectURL(r),lr)}async function R(){let t=s.selectedResult.data?.script;if(t&&C.value){v.value=!0,_.value=null;try{L(await e.a(t),`${e.h(s.selectedResult.title)}${e.n}`)}catch(e){_.value=e instanceof Error?e.message:String(e)}finally{v.value=!1}}}function ce(){b.value=!b.value}function z(){x.value=!x.value}function B(){j!==null&&clearTimeout(j),A.forEach(e=>t.o(w,e)),A=[],O&&cancelAnimationFrame(O),E&&E.dispose(),D&&(D.removeEventListener(`change`,I),D.dispose()),M&&M.disconnect(),window.removeEventListener(`resize`,P)}function V(){y++}async function le(){let e=d.value;try{t.a(t.r(t.s(e)))}catch(e){p.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e);return}p.value=null;let n=s.selectedResult.data?.filePath,r=++y;if(n)try{await u({kind:`saveShape`,path:n,script:e},t.Un)}catch(e){g.value=e instanceof Error?e.message:String(e);return}if(r!==y)return;g.value=null;let i={...s.selectedResult,data:n?{script:e,filePath:n}:{script:e}};c(`updateResult`,i)}return(0,n.watch)(()=>s.selectedResult.data?.script,e=>{e!==void 0&&(d.value=e)}),(0,n.watch)(()=>s.selectedResult,()=>{(0,n.nextTick)(()=>{ae()})}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Jn,[(0,n.createElementVNode)(`div`,Yn,[(0,n.createElementVNode)(`h1`,null,(0,n.toDisplayString)(i.selectedResult.title||(0,n.unref)(l).untitled),1),(0,n.createElementVNode)(`div`,Xn,[(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:ie},[t[1]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).resetCamera),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:ce},[(0,n.createElementVNode)(`span`,Zn,(0,n.toDisplayString)(b.value?`grid_off`:`grid_on`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).wireframe),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:z},[(0,n.createElementVNode)(`span`,Qn,(0,n.toDisplayString)(x.value?`visibility_off`:`visibility`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).grid),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,disabled:!C.value,"data-testid":`shapescript-download-usdz`,onClick:R},[t[2]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`download`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).downloadUsdz),1)],8,$n)])]),p.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,er,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).parseError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(p.value),1)])):(0,n.createCommentVNode)(``,!0),g.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,tr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).saveError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(g.value),1)])):(0,n.createCommentVNode)(``,!0),_.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,nr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).exportError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(_.value),1)])):(0,n.createCommentVNode)(``,!0),m.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,rr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).sceneWarnings),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(m.value.join(` · `)),1)])):(0,n.createCommentVNode)(``,!0),h.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`pre`,ir,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).printOutput),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(h.value.join(`
|
|
4217
|
-
`)),1)])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,{ref_key:`viewport`,ref:f,class:`viewport`,"data-testid":`shapescript-viewport`},null,512),(0,n.createElementVNode)(`details`,
|
|
4216
|
+
}`,gn=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,n){if(this.texture===null){let r=new t.A(e.texture);(e.depthNear!==n.depthNear||e.depthFar!==n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){let n=e.cameras[0].viewport,r=new t.on({vertexShader:mn,fragmentShader:hn,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new t.Y(new t.ot(20,20),r)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},_n=class extends t.k{constructor(e,n){super();let r=this,a=null,o=1,s=null,c=`local-floor`,l=1,u=null,d=null,f=null,p=null,m=null,h=null,g=typeof XRWebGLBinding<`u`,_=new gn,v={},y=n.getContextAttributes(),b=null,x=null,S=[],C=[],w=new t.Sn,T=null,E=null,D=new t.it;D.viewport=new t.wn;let O=new t.it;O.viewport=new t.wn;let k=[D,O],A=new t.u,j=null,M=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getTargetRaySpace()},this.getControllerGrip=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getGripSpace()},this.getHand=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getHandSpace()};function N(e){let t=C.indexOf(e.inputSource);if(t===-1)return;let n=S[t];n!==void 0&&(n.update(e.inputSource,e.frame,u||s),n.dispatchEvent({type:e.type,data:e.inputSource}))}function ee(){a.removeEventListener(`select`,N),a.removeEventListener(`selectstart`,N),a.removeEventListener(`selectend`,N),a.removeEventListener(`squeeze`,N),a.removeEventListener(`squeezestart`,N),a.removeEventListener(`squeezeend`,N),a.removeEventListener(`end`,ee),a.removeEventListener(`inputsourceschange`,P);for(let e=0;e<S.length;e++){let t=C[e];t!==null&&(C[e]=null,S[e].disconnect(t))}j=null,M=null,_.reset();for(let e in v)delete v[e];if(e.setRenderTarget(b),m=null,p=null,f=null,a=null,x=null,I.stop(),r.isPresenting=!1,e.setPixelRatio(T),e.setSize(w.width,w.height,!1),E!==null){let e=E.camera;e.fov=E.fov,e.zoom=E.zoom,e.updateProjectionMatrix(),E=null}r.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(e){o=e,r.isPresenting===!0&&t.Ln(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(e){c=e,r.isPresenting===!0&&t.Ln(`WebXRManager: Cannot change reference space type while presenting.`)},this.getReferenceSpace=function(){return u||s},this.setReferenceSpace=function(e){u=e},this.getBaseLayer=function(){return p===null?m:p},this.getBinding=function(){return f===null&&g&&(f=new XRWebGLBinding(a,n)),f},this.getFrame=function(){return h},this.getSession=function(){return a},this.setSession=async function(i){if(a=i,a!==null){if(b=e.getRenderTarget(),a.addEventListener(`select`,N),a.addEventListener(`selectstart`,N),a.addEventListener(`selectend`,N),a.addEventListener(`squeeze`,N),a.addEventListener(`squeezestart`,N),a.addEventListener(`squeezeend`,N),a.addEventListener(`end`,ee),a.addEventListener(`inputsourceschange`,P),y.xrCompatible!==!0&&await n.makeXRCompatible(),T=e.getPixelRatio(),e.getSize(w),g&&`createProjectionLayer`in XRWebGLBinding.prototype){let r=null,i=null,s=null;y.depth&&(s=y.stencil?n.DEPTH24_STENCIL8:n.DEPTH_COMPONENT24,r=y.stencil?t.E:t.T,i=y.stencil?t.gn:t.vn);let c={colorFormat:n.RGBA8,depthFormat:s,scaleFactor:o};f=this.getBinding(),p=f.createProjectionLayer(c),a.updateRenderState({layers:[p]}),e.setPixelRatio(1),e.setSize(p.textureWidth,p.textureHeight,!1),x=new t.En(p.textureWidth,p.textureHeight,{format:t.mt,type:t.mn,depthTexture:new t.D(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,r),stencilBuffer:y.stencil,colorSpace:e.outputColorSpace,samples:y.antialias?4:0,resolveDepthBuffer:p.ignoreDepthValues===!1,resolveStencilBuffer:p.ignoreDepthValues===!1,storeMultisampledDepthBuffer:p.ignoreDepthValues===!1,storeMultisampledStencilBuffer:p.ignoreDepthValues===!1})}else{let r={antialias:y.antialias,alpha:!0,depth:y.depth,stencil:y.stencil,framebufferScaleFactor:o};m=new XRWebGLLayer(a,n,r),a.updateRenderState({baseLayer:m}),e.setPixelRatio(1),e.setSize(m.framebufferWidth,m.framebufferHeight,!1),x=new t.En(m.framebufferWidth,m.framebufferHeight,{format:t.mt,type:t.mn,colorSpace:e.outputColorSpace,stencilBuffer:y.stencil,resolveDepthBuffer:m.ignoreDepthValues===!1,resolveStencilBuffer:m.ignoreDepthValues===!1,storeMultisampledDepthBuffer:m.ignoreDepthValues===!1,storeMultisampledStencilBuffer:m.ignoreDepthValues===!1})}x.isXRRenderTarget=!0,this.setFoveation(l),u=null,s=await a.requestReferenceSpace(c),I.setContext(a),I.start(),r.isPresenting=!0,r.dispatchEvent({type:`sessionstart`})}},this.getEnvironmentBlendMode=function(){if(a!==null)return a.environmentBlendMode},this.getDepthTexture=function(){return _.getDepthTexture()};function P(e){for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=C.indexOf(n);r>=0&&(C[r]=null,S[r].disconnect(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=C.indexOf(n);if(r===-1){for(let e=0;e<S.length;e++)if(e>=C.length){C.push(n),r=e;break}else if(C[e]===null){C[e]=n,r=e;break}if(r===-1)break}let i=S[r];i&&i.connect(n)}}let te=new t.Cn,F=new t.Cn;function ne(e,t,n){te.setFromMatrixPosition(t.matrixWorld),F.setFromMatrixPosition(n.matrixWorld);let r=te.distanceTo(F),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function re(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(a===null)return;let t=e.near,n=e.far;_.texture!==null&&(_.depthNear>0&&(t=_.depthNear),_.depthFar>0&&(n=_.depthFar)),A.near=O.near=D.near=t,A.far=O.far=D.far=n,(j!==A.near||M!==A.far)&&(a.updateRenderState({depthNear:A.near,depthFar:A.far}),j=A.near,M=A.far),A.layers.mask=e.layers.mask|6,D.layers.mask=A.layers.mask&-5,O.layers.mask=A.layers.mask&-3;let r=e.parent,i=A.cameras;re(A,r);for(let e=0;e<i.length;e++)re(i[e],r);i.length===2?ne(A,D,O):A.projectionMatrix.copy(D.projectionMatrix),E===null&&e.isPerspectiveCamera&&(E={camera:e,fov:e.fov,zoom:e.zoom}),ie(e,A,r)};function ie(e,n,r){r===null?e.matrix.copy(n.matrixWorld):(e.matrix.copy(r.matrixWorld),e.matrix.invert(),e.matrix.multiply(n.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(n.projectionMatrix),e.projectionMatrixInverse.copy(n.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=t.ut*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}this.getCamera=function(){return A},this.getFoveation=function(){if(p!==null||m!==null)return l},this.setFoveation=function(e){l=e,p!==null&&(p.fixedFoveation=e),m!==null&&m.fixedFoveation!==void 0&&(m.fixedFoveation=e)},this.hasDepthSensing=function(){return _.texture!==null},this.getDepthSensingMesh=function(){return _.getMesh(A)},this.getCameraTexture=function(e){return v[e]};let ae=null;function oe(n,i){if(d=i.getViewerPose(u||s),h=i,d!==null){let n=d.views;m!==null&&(e.setRenderTargetFramebuffer(x,m.framebuffer),e.setRenderTarget(x));let i=!1;n.length!==A.cameras.length&&(A.cameras.length=0,i=!0);for(let r=0;r<n.length;r++){let a=n[r],o=null;if(m!==null)o=m.getViewport(a);else{let t=f.getViewSubImage(p,a);o=t.viewport,r===0&&(e.setRenderTargetTextures(x,t.colorTexture,t.depthStencilTexture),e.setRenderTarget(x))}let s=k[r];s===void 0&&(s=new t.it,s.layers.enable(r),s.viewport=new t.wn,k[r]=s),s.matrix.fromArray(a.transform.matrix),s.matrix.decompose(s.position,s.quaternion,s.scale),s.projectionMatrix.fromArray(a.projectionMatrix),s.projectionMatrixInverse.copy(s.projectionMatrix).invert(),s.viewport.set(o.x,o.y,o.width,o.height),r===0&&(A.matrix.copy(s.matrix),A.matrix.decompose(A.position,A.quaternion,A.scale)),i===!0&&A.cameras.push(s)}let o=a.enabledFeatures;if(o&&o.includes(`depth-sensing`)&&a.depthUsage==`gpu-optimized`&&g){f=r.getBinding();let e=f.getDepthInformation(n[0]);e&&e.isValid&&e.texture&&_.init(e,a.renderState)}if(o&&o.includes(`camera-access`)&&g){e.state.unbindTexture(),f=r.getBinding();for(let e=0;e<n.length;e++){let r=n[e].camera;if(r){let e=v[r];e||(e=new t.A,v[r]=e);let n=f.getCameraImage(r);e.sourceTexture=n}}}}for(let e=0;e<S.length;e++){let t=C[e],n=S[e];t!==null&&n!==void 0&&n.update(t,i,u||s)}ae&&ae(n,i),i.detectedPlanes&&r.dispatchEvent({type:`planesdetected`,data:i}),h=null}let I=new i;I.setAnimationLoop(oe),this.setAnimationLoop=function(e){ae=e},this.dispose=function(){}}},vn=new t.J,yn=new t.q;yn.set(-1,0,0,0,1,0,0,0,1);function bn(e,n){function r(e,t){e.matrixAutoUpdate===!0&&e.updateMatrix(),t.value.copy(e.matrix)}function i(n,r){r.color.getRGB(n.fogColor.value,t.Nn(e)),r.isFog?(n.fogNear.value=r.near,n.fogFar.value=r.far):r.isFogExp2&&(n.fogDensity.value=r.density)}function a(e,t,n,r,i){t.isNodeMaterial?t.uniformsNeedUpdate=!1:t.isMeshBasicMaterial?o(e,t):t.isMeshLambertMaterial?(o(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshToonMaterial?(o(e,t),f(e,t)):t.isMeshPhongMaterial?(o(e,t),d(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshStandardMaterial?(o(e,t),p(e,t),t.isMeshPhysicalMaterial&&m(e,t,i)):t.isMeshMatcapMaterial?(o(e,t),h(e,t)):t.isMeshDepthMaterial?o(e,t):t.isMeshDistanceMaterial?(o(e,t),g(e,t)):t.isMeshNormalMaterial?o(e,t):t.isLineBasicMaterial?(s(e,t),t.isLineDashedMaterial&&c(e,t)):t.isPointsMaterial?l(e,t,n,r):t.isSpriteMaterial?u(e,t):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}function o(e,t){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.bumpMap&&(e.bumpMap.value=t.bumpMap,r(t.bumpMap,e.bumpMapTransform),e.bumpScale.value=t.bumpScale,t.side===1&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,r(t.normalMap,e.normalMapTransform),e.normalScale.value.copy(t.normalScale),t.side===1&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,r(t.displacementMap,e.displacementMapTransform),e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap,r(t.emissiveMap,e.emissiveMapTransform)),t.specularMap&&(e.specularMap.value=t.specularMap,r(t.specularMap,e.specularMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let i=n.get(t),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,e.envMapRotation.value.setFromMatrix4(vn.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(yn),e.reflectivity.value=t.reflectivity,e.ior.value=t.ior,e.refractionRatio.value=t.refractionRatio),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity,r(t.lightMap,e.lightMapTransform)),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity,r(t.aoMap,e.aoMapTransform))}function s(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform))}function c(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}function l(e,t,n,i){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*n,e.scale.value=i*.5,t.map&&(e.map.value=t.map,r(t.map,e.uvTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function u(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function d(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}function f(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}function p(e,t){e.metalness.value=t.metalness,t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap,r(t.metalnessMap,e.metalnessMapTransform)),e.roughness.value=t.roughness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap,r(t.roughnessMap,e.roughnessMapTransform)),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}function m(e,t,n){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,r(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,r(t.sheenRoughnessMap,e.sheenRoughnessMapTransform))),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,r(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,r(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,r(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===1&&e.clearcoatNormalScale.value.negate())),t.dispersion>0&&(e.dispersion.value=t.dispersion),t.retroreflectivity>0&&(e.retroreflectivity.value=t.retroreflectivity),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,r(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,r(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform))),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=n.texture,e.transmissionSamplerSize.value.set(n.width,n.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,r(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,r(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,r(t.anisotropyMap,e.anisotropyMapTransform))),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,r(t.specularColorMap,e.specularColorMapTransform)),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,r(t.specularIntensityMap,e.specularIntensityMapTransform))}function h(e,t){t.matcap&&(e.matcap.value=t.matcap)}function g(e,t){let r=n.get(t).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:a}}function xn(e,n,r,i){let a={},o={},s=[],c=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function l(e,t){let n=t.program;i.uniformBlockBinding(e,n)}function u(e,t){let r=a[e.id];r===void 0&&(_(e),r=d(e),a[e.id]=r,e.addEventListener(`dispose`,y));let s=t.program;i.updateUBOMapping(e,s);let c=n.render.frame;o[e.id]!==c&&(p(e),o[e.id]=c)}function d(t){let n=f();t.__bindingPointIndex=n;let r=e.createBuffer(),i=t.__size,a=t.usage;return e.bindBuffer(e.UNIFORM_BUFFER,r),e.bufferData(e.UNIFORM_BUFFER,i,a),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,n,r),r}function f(){for(let e=0;e<c;e++)if(s.indexOf(e)===-1)return s.push(e),e;return t.jn(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function p(t){let n=a[t.id],r=t.uniforms,i=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let e=0,t=r.length;e<t;e++){let t=r[e];if(Array.isArray(t))for(let n=0,r=t.length;n<r;n++)m(t[n],e,n,i);else m(t,e,0,i)}e.bindBuffer(e.UNIFORM_BUFFER,null)}function m(t,n,r,i){if(g(t,n,r,i)===!0){let n=t.__offset,r=t.value;if(Array.isArray(r)){let e=0;for(let n=0;n<r.length;n++){let i=r[n],a=v(i);h(i,t.__data,e),typeof i!=`number`&&typeof i!=`boolean`&&!i.isMatrix3&&!ArrayBuffer.isView(i)&&(e+=a.storage/Float32Array.BYTES_PER_ELEMENT)}}else h(r,t.__data,0);e.bufferSubData(e.UNIFORM_BUFFER,n,t.__data)}}function h(e,t,n){typeof e==`number`||typeof e==`boolean`?t[0]=e:e.isMatrix3?(t[0]=e.elements[0],t[1]=e.elements[1],t[2]=e.elements[2],t[3]=0,t[4]=e.elements[3],t[5]=e.elements[4],t[6]=e.elements[5],t[7]=0,t[8]=e.elements[6],t[9]=e.elements[7],t[10]=e.elements[8],t[11]=0):ArrayBuffer.isView(e)?t.set(new e.constructor(e.buffer,e.byteOffset,t.length)):e.toArray(t,n)}function g(e,t,n,r){let i=e.value,a=t+`_`+n;if(r[a]===void 0)return r[a]=typeof i==`number`||typeof i==`boolean`?i:ArrayBuffer.isView(i)?i.slice():i.clone(),!0;{let e=r[a];if(typeof i==`number`||typeof i==`boolean`){if(e!==i)return r[a]=i,!0}else if(ArrayBuffer.isView(i))return!0;else if(e.equals(i)===!1)return e.copy(i),!0}return!1}function _(e){let t=e.uniforms,n=0;for(let e=0,r=t.length;e<r;e++){let r=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=Array.isArray(t.value)?t.value:[t.value];for(let e=0,r=i.length;e<r;e++){let r=i[e],a=v(r),o=n%16,s=o%a.boundary,c=o+s;n+=s,c!==0&&16-c<a.storage&&(n+=16-c),t.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),t.__offset=n,n+=a.storage}}}let r=n%16;return r>0&&(n+=16-r),e.__size=n,e.__cache={},this}function v(e){let n={boundary:0,storage:0};return typeof e==`number`||typeof e==`boolean`?(n.boundary=4,n.storage=4):e.isVector2?(n.boundary=8,n.storage=8):e.isVector3||e.isColor?(n.boundary=16,n.storage=12):e.isVector4?(n.boundary=16,n.storage=16):e.isMatrix3?(n.boundary=48,n.storage=48):e.isMatrix4?(n.boundary=64,n.storage=64):e.isTexture?t.Ln(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(e)?(n.boundary=16,n.storage=e.byteLength):t.Ln(`WebGLRenderer: Unsupported uniform value type.`,e),n}function y(t){let n=t.target;n.removeEventListener(`dispose`,y);let r=s.indexOf(n.__bindingPointIndex);s.splice(r,1),e.deleteBuffer(a[n.id]),delete a[n.id],delete o[n.id]}function b(){for(let t in a)e.deleteBuffer(a[t]);s=[],a={},o={}}return{bind:l,update:u,dispose:b}}var Sn=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]),Cn=null;function wn(){return Cn===null&&(Cn=new t.w(Sn,16,16,t.Gt,t.L),Cn.name=`DFG_LUT`,Cn.minFilter=t.B,Cn.magFilter=t.B,Cn.wrapS=t.h,Cn.wrapT=t.h,Cn.generateMipmaps=!1,Cn.needsUpdate=!0),Cn}var Tn=class{constructor(e={}){let{canvas:n=t.kn(),context:r=null,depth:o=!0,stencil:s=!1,alpha:c=!1,antialias:l=!1,premultipliedAlpha:u=!0,preserveDrawingBuffer:d=!1,powerPreference:_=`default`,failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:y=!1,outputBufferType:b=t.mn}=e;this.isWebGLRenderer=!0;let x;if(r!==null){if(typeof WebGLRenderingContext<`u`&&r instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);x=r.getContextAttributes().alpha}else x=c;let S=b,C=new Set([t.ht,t.Kt,t.Xt]),w=new Set([t.mn,t.vn,t.xn,t.gn,t.yn,t.bn]),T=new Uint32Array(4),E=new Int32Array(4),D=new t.Cn,O=null,k=null,A=[],j=[],M=null;this.domElement=n,this.debug={checkShaderErrors:!0,diagnostics:{keywords:!1},onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=0,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let N=this,ee=!1,P=null,te=null,F=null,ne=null;this._outputColorSpace=t.rn;let R=0,z=0,B=null,V=-1,le=null,H=new t.wn,ue=new t.wn,de=null,fe=new t.g(0),pe=0,me=n.width,U=n.height,W=1,G=null,he=null,ge=new t.wn(0,0,me,U),_e=new t.wn(0,0,me,U),ve=!1,ye=new t.N,be=!1,xe=!1,Se=new t.J,Ce=new t.Cn,we=new t.wn,Te={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},Ee=!1;function De(){return B===null?W:1}let K=r;function Oe(e,t){return n.getContext(e,t)}let q,ke,J,Ae,Y,X,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;try{let e={alpha:!0,depth:o,stencil:s,antialias:l,premultipliedAlpha:u,preserveDrawingBuffer:d,powerPreference:_,failIfMajorPerformanceCaveat:v};if(`setAttribute`in n&&n.setAttribute(`data-engine`,`three.js r186`),n.addEventListener(`webglcontextlost`,Ye,!1),n.addEventListener(`webglcontextrestored`,Xe,!1),n.addEventListener(`webglcontextcreationerror`,Ze,!1),K===null){let t=`webgl2`;if(K=Oe(t,e),K===null)throw Oe(t)?Error(`THREE.WebGLRenderer: Error creating WebGL context with your selected attributes.`):Error(`THREE.WebGLRenderer: Error creating WebGL context.`)}Je()}catch(e){throw n.removeEventListener(`webglcontextlost`,Ye,!1),n.removeEventListener(`webglcontextrestored`,Xe,!1),n.removeEventListener(`webglcontextcreationerror`,Ze,!1),t.jn(`WebGLRenderer: `+e.message),e}function Je(){q=new ie(K),q.init(),Ge=new pn(K,q),ke=new h(K,q,e,Ge),J=new dn(K,q),ke.reversedDepthBuffer&&y&&J.buffers.depth.setReversed(!0),te=K.createFramebuffer(),F=K.createFramebuffer(),ne=K.createFramebuffer(),Ae=new I(K),Y=new Wt,X=new fn(K,q,J,Y,ke,Ge,Ae),je=new re(N),Me=new a(K),Ke=new p(K,Me),Ne=new ae(K,Me,Ae,Ke),Pe=new L(K,Ne,Me,Ke,Ae),He=new se(K,ke,X),ze=new g(Y),Fe=new Ut(N,je,q,ke,Ke,ze),Ie=new bn(N,Y),Le=new Jt,Re=new tn(q),Ve=new f(N,je,J,Pe,x,u),Be=new un(N,Pe,ke),qe=new xn(K,Ae,ke,J),Ue=new m(K,q,Ae),We=new oe(K,q,Ae),Ae.programs=Fe.programs,N.capabilities=ke,N.extensions=q,N.properties=Y,N.renderLists=Le,N.shadowMap=Be,N.state=J,N.info=Ae}S!==1009&&(M=new ce(S,n.width,n.height,l,o,s));let Z=new _n(N,K);this.xr=Z,this.getContext=function(){return K},this.getContextAttributes=function(){return K.getContextAttributes()},this.forceContextLoss=function(){let e=q.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=q.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return W},this.setPixelRatio=function(e){e!==void 0&&(W=e,this.setSize(me,U,!1))},this.getSize=function(e){return e.set(me,U)},this.setSize=function(e,r,i=!0){if(Z.isPresenting){t.Ln(`WebGLRenderer: Can't change size while VR device is presenting.`);return}me=e,U=r,n.width=Math.floor(e*W),n.height=Math.floor(r*W),i===!0&&(n.style.width=e+`px`,n.style.height=r+`px`),M!==null&&M.setSize(n.width,n.height),this.setViewport(0,0,e,r)},this.getDrawingBufferSize=function(e){return e.set(me*W,U*W).floor()},this.setDrawingBufferSize=function(e,t,r){me=e,U=t,W=r,n.width=Math.floor(e*r),n.height=Math.floor(t*r),this.setViewport(0,0,e,t)},this.setEffects=function(e){if(S===1009){t.jn(`WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(e){for(let n=0;n<e.length;n++)if(e[n].isOutputPass===!0){t.Ln(`WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}M.setEffects(e||[])},this.getCurrentViewport=function(e){return e.copy(H)},this.getViewport=function(e){return e.copy(ge)},this.setViewport=function(e,t,n,r){e.isVector4?ge.set(e.x,e.y,e.z,e.w):ge.set(e,t,n,r),J.viewport(H.copy(ge).multiplyScalar(W).round())},this.getScissor=function(e){return e.copy(_e)},this.setScissor=function(e,t,n,r){e.isVector4?_e.set(e.x,e.y,e.z,e.w):_e.set(e,t,n,r),J.scissor(ue.copy(_e).multiplyScalar(W).round())},this.getScissorTest=function(){return ve},this.setScissorTest=function(e){J.setScissorTest(ve=e)},this.setOpaqueSort=function(e){G=e},this.setTransparentSort=function(e){he=e},this.getClearColor=function(e){return e.copy(Ve.getClearColor())},this.setClearColor=function(){Ve.setClearColor(...arguments)},this.getClearAlpha=function(){return Ve.getClearAlpha()},this.setClearAlpha=function(){Ve.setClearAlpha(...arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(B!==null){let t=B.texture.format;e=C.has(t)}if(e){let e=B.texture.type,t=w.has(e),n=Ve.getClearColor(),r=Ve.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(T[0]=i,T[1]=a,T[2]=o,T[3]=r,K.clearBufferuiv(K.COLOR,0,T)):(E[0]=i,E[1]=a,E[2]=o,E[3]=r,K.clearBufferiv(K.COLOR,0,E))}else r|=K.COLOR_BUFFER_BIT}t&&(r|=K.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=K.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&K.clear(r)},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.setNodesHandler=function(e){e.setRenderer(this),P=e},this.dispose=function(){n.removeEventListener(`webglcontextlost`,Ye,!1),n.removeEventListener(`webglcontextrestored`,Xe,!1),n.removeEventListener(`webglcontextcreationerror`,Ze,!1),Ve.dispose(),Le.dispose(),Re.dispose(),Y.dispose(),je.dispose(),Pe.dispose(),Ke.dispose(),qe.dispose(),Fe.dispose(),Z.dispose(),Z.removeEventListener(`sessionstart`,at),Z.removeEventListener(`sessionend`,ot),st.stop()};function Ye(e){e.preventDefault(),t.Pn(`WebGLRenderer: Context Lost.`),ee=!0}function Xe(){t.Pn(`WebGLRenderer: Context Restored.`),ee=!1;let e=Ae.autoReset,n=Be.enabled,r=Be.autoUpdate,i=Be.needsUpdate,a=Be.type;Je(),Ae.autoReset=e,Be.enabled=n,Be.autoUpdate=r,Be.needsUpdate=i,Be.type=a}function Ze(e){t.jn(`WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function Qe(e){let t=e.target;t.removeEventListener(`dispose`,Qe),$e(t)}function $e(e){et(e),Y.remove(e)}function et(e){let t=Y.get(e).programs;t!==void 0&&(t.forEach(function(e){Fe.releaseProgram(e)}),e.isShaderMaterial&&Fe.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=Te);let o=i.isMesh&&i.matrixWorld.determinantAffine()<0,s=_t(e,t,n,r,i);J.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=Ne.getWireframeAttribute(n),c===void 0)return;l=2}let u=n.drawRange,d=n.attributes.position,f=u.start*l,p=(u.start+u.count)*l;a!==null&&(f=Math.max(f,a.start*l),p=Math.min(p,(a.start+a.count)*l)),c===null?d!=null&&(f=Math.max(f,0),p=Math.min(p,d.count)):(f=Math.max(f,0),p=Math.min(p,c.count));let m=p-f;if(m<0||m===1/0)return;Ke.setup(i,r,s,n,c);let h,g=Ue;if(c!==null&&(h=Me.get(c),g=We,g.setIndex(h)),i.isMesh)r.wireframe===!0?(J.setLineWidth(r.wireframeLinewidth*De()),g.setMode(K.LINES)):g.setMode(K.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),J.setLineWidth(e*De()),i.isLineSegments?g.setMode(K.LINES):i.isLineLoop?g.setMode(K.LINE_LOOP):g.setMode(K.LINE_STRIP)}else i.isPoints?g.setMode(K.POINTS):i.isSprite&&g.setMode(K.TRIANGLES);if(i.isBatchedMesh){if(q.get(`WEBGL_multi_draw`))g.renderMultiDraw(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount);else{let e=i._multiDrawStarts,t=i._multiDrawCounts,n=i._multiDrawCount,a=c?Me.get(c).bytesPerElement:1,o=Y.get(r).currentProgram.getUniforms();for(let r=0;r<n;r++)o.setValue(K,`_gl_DrawID`,r),g.render(e[r]/a,t[r])}}else if(i.isInstancedMesh)g.renderInstances(f,m,i.count);else if(n.isInstancedBufferGeometry){let e=n._maxInstanceCount===void 0?1/0:n._maxInstanceCount,t=Math.min(n.instanceCount,e);g.renderInstances(f,m,t)}else g.render(f,m)};function tt(e,t,n,r){P!==null&&e.isNodeMaterial&&P.setObject(r,e),be===!0&&ze.setState(e,n,!1),e.transparent===!0&&e.side===2&&e.forceSinglePass===!1?(e.side=1,e.needsUpdate=!0,pt(e,t,r),e.side=0,e.needsUpdate=!0,pt(e,t,r),e.side=2):pt(e,t,r)}this.compile=function(e,t,n=null){n===null&&(n=e),P!==null&&P.renderStart(e,t,n),k=Re.get(n),k.init(t),j.push(k),n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),e!==n&&e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),k.setupLights(),P!==null&&P.updateLights(k.state.lightsArray),xe=this.localClippingEnabled,be=ze.init(this.clippingPlanes,xe),be===!0&&ze.setGlobalState(this.clippingPlanes,t),P!==null&&Be.render(k.state.shadowsArray,n,t);let r=new Set;return e.traverse(function(e){if(!(e.isMesh||e.isPoints||e.isLine||e.isSprite))return;let i=e.material;if(i){if(Array.isArray(i))for(let a=0;a<i.length;a++){let o=i[a];tt(o,n,t,e),r.add(o)}else tt(i,n,t,e),r.add(i)}}),k=j.pop(),P!==null&&P.renderEnd(),r},this.compileAsync=function(e,t,n=null){let r=this.compile(e,t,n);return new Promise(t=>{function n(){if(r.forEach(function(e){let t=Y.get(e).currentProgram;(t===void 0||t.isReady())&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}q.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let rt=null;function it(e){rt&&rt(e)}function at(){st.stop()}function ot(){st.start()}let st=new i;st.setAnimationLoop(it),typeof self<`u`&&st.setContext(self),this.setAnimationLoop=function(e){rt=e,Z.setAnimationLoop(e),e===null?st.stop():st.start()},Z.addEventListener(`sessionstart`,at),Z.addEventListener(`sessionend`,ot),this.render=function(e,n){if(n!==void 0&&n.isCamera!==!0){t.jn(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(ee===!0)return;P!==null&&P.renderStart(e,n);let r=Z.enabled===!0&&Z.isPresenting===!0,i=M!==null&&(B===null||r)&&M.begin(N,B);if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),n.parent===null&&n.matrixWorldAutoUpdate===!0&&n.updateMatrixWorld(),Z.enabled===!0&&Z.isPresenting===!0&&(M===null||M.isCompositing()===!1)&&(Z.cameraAutoUpdate===!0&&Z.updateCamera(n),n=Z.getCamera()),e.isScene===!0&&e.onBeforeRender(N,e,n,B),k=Re.get(e,j.length),k.init(n),k.state.textureUnits=X.getTextureUnits(),j.push(k),Se.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),ye.setFromProjectionMatrix(Se,t.Tn,n.reversedDepth),xe=this.localClippingEnabled,be=ze.init(this.clippingPlanes,xe),O=Le.get(e,A.length),O.init(),A.push(O),Z.enabled===!0&&Z.isPresenting===!0){let e=N.xr.getDepthSensingMesh();e!==null&&ct(e,n,-1/0,N.sortObjects)}ct(e,n,0,N.sortObjects),O.finish(),P!==null&&P.updateLights(k.state.lightsArray),N.sortObjects===!0&&O.sort(G,he),Ee=Z.enabled===!1||Z.isPresenting===!1||Z.hasDepthSensing()===!1,Ee&&Ve.addToRenderList(O,e),this.info.render.frame++,this.info.autoReset===!0&&this.info.reset(),be===!0&&ze.beginShadows();let a=k.state.shadowsArray;if(Be.render(a,e,n),be===!0&&ze.endShadows(),(i&&M.hasRenderPass())===!1){let t=O.opaque,r=O.transmissive;if(k.setupLights(),n.isArrayCamera){let i=n.cameras;if(r.length>0)for(let n=0,a=i.length;n<a;n++){let a=i[n];ut(t,r,e,a)}Ee&&Ve.render(e);for(let t=0,n=i.length;t<n;t++){let n=i[t];lt(O,e,n,n.viewport)}}else r.length>0&&ut(t,r,e,n),Ee&&Ve.render(e),lt(O,e,n)}B!==null&&z===0&&(X.updateMultisampleRenderTarget(B),X.updateRenderTargetMipmap(B)),i&&M.end(N),e.isScene===!0&&e.onAfterRender(N,e,n),Ke.resetDefaultState(),V=-1,le=null,j.pop(),j.length>0?(k=j[j.length-1],X.setTextureUnits(k.state.textureUnits),be===!0&&ze.setGlobalState(N.clippingPlanes,k.state.camera)):k=null,A.pop(),O=A.length>0?A[A.length-1]:null,P!==null&&P.renderEnd()};function ct(e,t,n,r){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLightProbeGrid)k.pushLightProbeGrid(e);else if(e.isLight)k.pushLight(e),e.castShadow&&k.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||e.intersectsFrustum(ye)){r&&we.setFromMatrixPosition(e.matrixWorld).applyMatrix4(Se);let i=Pe.update(e),a=e.material;a.visible&&O.push(e,i,a,n,we.z,null,t)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||e.intersectsFrustum(ye))){let i=Pe.update(e),a=e.material;if(r&&(e.boundingSphere===void 0?(i.boundingSphere===null&&i.computeBoundingSphere(),we.copy(i.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),we.copy(e.boundingSphere.center)),we.applyMatrix4(e.matrixWorld).applyMatrix4(Se)),Array.isArray(a)){let r=i.groups;for(let o=0,s=r.length;o<s;o++){let s=r[o],c=a[s.materialIndex];c&&c.visible&&O.push(e,i,c,n,we.z,s,t)}}else a.visible&&O.push(e,i,a,n,we.z,null,t)}}let i=e.children;for(let e=0,a=i.length;e<a;e++)ct(i[e],t,n,r)}function lt(e,t,n,r){let{opaque:i,transmissive:a,transparent:o}=e;k.setupLightsView(n),be===!0&&ze.setGlobalState(N.clippingPlanes,n),r&&J.viewport(H.copy(r)),i.length>0&&dt(i,t,n),a.length>0&&dt(a,t,n),o.length>0&&dt(o,t,n),J.buffers.depth.setTest(!0),J.buffers.depth.setMask(!0),J.buffers.color.setMask(!0),J.setPolygonOffset(!1)}function ut(e,n,r,i){if((r.isScene===!0?r.overrideMaterial:null)!==null)return;if(k.state.transmissionRenderTarget[i.id]===void 0){let e=q.has(`EXT_color_buffer_half_float`)||q.has(`EXT_color_buffer_float`);k.state.transmissionRenderTarget[i.id]=new t.En(1,1,{generateMipmaps:!0,type:e?t.L:t.mn,minFilter:t.V,samples:Math.max(4,ke.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,storeMultisampledDepthBuffer:!1,storeMultisampledStencilBuffer:!1,colorSpace:t._.workingColorSpace})}let a=k.state.transmissionRenderTarget[i.id],o=i.viewport||H;a.setSize(o.z*N.transmissionResolutionScale,o.w*N.transmissionResolutionScale);let c=N.getRenderTarget(),l=N.getActiveCubeFace(),u=N.getActiveMipmapLevel();N.setRenderTarget(a),N.getClearColor(fe),pe=N.getClearAlpha(),pe<1&&N.setClearColor(16777215,.5),N.clear(),Ee&&Ve.render(r);let d=N.toneMapping;N.toneMapping=0;let f=i.viewport;if(i.viewport!==void 0&&(i.viewport=void 0),k.setupLightsView(i),be===!0&&ze.setGlobalState(N.clippingPlanes,i),dt(e,r,i),X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a),q.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let t=0,a=n.length;t<a;t++){let{object:a,geometry:o,material:s,group:c}=n[t];if(s.side===2&&a.layers.test(i.layers)){let t=s.side;s.side=1,s.needsUpdate=!0,ft(a,r,i,o,s,c),s.side=t,s.needsUpdate=!0,e=!0}}e===!0&&(X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a))}N.setRenderTarget(c,l,u),N.setClearColor(fe,pe),f!==void 0&&(i.viewport=f),N.toneMapping=d}function dt(e,t,n){let r=t.isScene===!0?t.overrideMaterial:null;for(let i=0,a=e.length;i<a;i++){let a=e[i],{object:o,geometry:s,group:c}=a,l=a.material;l.allowOverride===!0&&r!==null&&(l=r),o.layers.test(n.layers)&&ft(o,t,n,s,l,c)}}function ft(e,t,n,r,i,a){P!==null&&i.isNodeMaterial&&P.setObject(e,i),e.onBeforeRender(N,t,n,r,i,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),i.onBeforeRender(N,t,n,r,e,a),i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=0,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=2):N.renderBufferDirect(n,t,r,i,e,a),e.onAfterRender(N,t,n,r,i,a)}function pt(e,t,n){t.isScene!==!0&&(t=Te);let r=Y.get(e),i=k.state.lights,a=k.state.shadowsArray,o=i.state.version,s=Fe.getParameters(e,i.state,a,t,n,k.state.lightProbeGridArray),c=Fe.getProgramCacheKey(s),l=r.programs;r.environment=e.isMeshStandardMaterial||e.isMeshLambertMaterial||e.isMeshPhongMaterial?t.environment:null,r.fog=t.fog;let u=e.isMeshStandardMaterial||e.isMeshLambertMaterial&&!e.envMap||e.isMeshPhongMaterial&&!e.envMap;r.envMap=je.get(e.envMap||r.environment,u),r.envMapRotation=r.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation,l===void 0&&(e.addEventListener(`dispose`,Qe),l=new Map,r.programs=l);let d=l.get(c);if(d!==void 0){if(r.currentProgram===d&&r.lightsStateVersion===o)return ht(e,s),d}else s.uniforms=Fe.getUniforms(e),P!==null&&e.isNodeMaterial&&P.build(e,n,s),e.onBeforeCompile(s,N),d=Fe.acquireProgram(s,c),l.set(c,d),r.uniforms=s.uniforms;let f=r.uniforms;return(!e.isShaderMaterial&&!e.isRawShaderMaterial||e.clipping===!0)&&(f.clippingPlanes=ze.uniform),ht(e,s),r.needsLights=yt(e),r.lightsStateVersion=o,r.needsLights&&(f.ambientLightColor.value=i.state.ambient,f.lightProbe.value=i.state.probe,f.sunLights.value=i.state.sun,f.sunLightShadows.value=i.state.sunShadow,f.directionalLights.value=i.state.directional,f.directionalLightShadows.value=i.state.directionalShadow,f.spotLights.value=i.state.spot,f.spotLightShadows.value=i.state.spotShadow,f.rectAreaLights.value=i.state.rectArea,f.ltc_1.value=i.state.rectAreaLTC1,f.ltc_2.value=i.state.rectAreaLTC2,f.pointLights.value=i.state.point,f.pointLightShadows.value=i.state.pointShadow,f.hemisphereLights.value=i.state.hemi,f.sunShadowMatrix.value=i.state.sunShadowMatrix,f.sunShadowCascade.value=i.state.sunShadowCascade,f.directionalShadowMatrix.value=i.state.directionalShadowMatrix,f.spotLightMatrix.value=i.state.spotLightMatrix,f.spotLightMap.value=i.state.spotLightMap,f.pointShadowMatrix.value=i.state.pointShadowMatrix),r.lightProbeGrid=k.state.lightProbeGridArray.length>0,r.currentProgram=d,r.uniformsList=null,d}function mt(e){if(e.uniformsList===null){let t=e.currentProgram.getUniforms();e.uniformsList=nt.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function ht(e,t){let n=Y.get(e);n.outputColorSpace=t.outputColorSpace,n.batching=t.batching,n.batchingColor=t.batchingColor,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.instancingMorph=t.instancingMorph,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}function gt(e,t){if(e.length===0)return null;if(e.length===1)return e[0].texture===null?null:e[0];D.setFromMatrixPosition(t.matrixWorld);for(let t=0,n=e.length;t<n;t++){let n=e[t];if(n.texture!==null&&n.boundingBox.containsPoint(D))return n}return null}function _t(e,n,r,i,a){n.isScene!==!0&&(n=Te),X.resetTextureUnits();let o=n.fog,s=i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial?n.environment:null,c=B===null?N.outputColorSpace:B.isXRRenderTarget===!0?B.texture.colorSpace:t._.workingColorSpace,l=i.isMeshStandardMaterial||i.isMeshLambertMaterial&&!i.envMap||i.isMeshPhongMaterial&&!i.envMap,u=je.get(i.envMap||s,l),d=i.vertexColors===!0&&!!r.attributes.color&&r.attributes.color.itemSize===4,f=!!r.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),p=!!r.morphAttributes.position,m=!!r.morphAttributes.normal,h=!!r.morphAttributes.color,g=0;i.toneMapped&&(B===null||B.isXRRenderTarget===!0)&&(g=N.toneMapping);let _=r.morphAttributes.position||r.morphAttributes.normal||r.morphAttributes.color,v=_===void 0?0:_.length,y=Y.get(i),b=k.state.lights;if(be===!0&&(xe===!0||e!==le)){let t=e===le&&i.id===V;ze.setState(i,e,t)}let x=!1;i.version===y.__version?y.needsLights&&y.lightsStateVersion!==b.state.version?x=!0:y.outputColorSpace===c?a.isBatchedMesh&&y.batching===!1||!a.isBatchedMesh&&y.batching===!0||a.isBatchedMesh&&y.batchingColor===!0&&a._colorsTexture===null||a.isBatchedMesh&&y.batchingColor===!1&&a._colorsTexture!==null||a.isInstancedMesh&&y.instancing===!1||!a.isInstancedMesh&&y.instancing===!0||a.isSkinnedMesh&&y.skinning===!1||!a.isSkinnedMesh&&y.skinning===!0||a.isInstancedMesh&&y.instancingColor===!0&&a.instanceColor===null||a.isInstancedMesh&&y.instancingColor===!1&&a.instanceColor!==null||a.isInstancedMesh&&y.instancingMorph===!0&&a.morphTexture===null||a.isInstancedMesh&&y.instancingMorph===!1&&a.morphTexture!==null?x=!0:y.envMap===u?i.fog===!0&&y.fog!==o||y.numClippingPlanes!==void 0&&(y.numClippingPlanes!==ze.numPlanes||y.numIntersection!==ze.numIntersection)?x=!0:y.vertexAlphas===d&&y.vertexTangents===f&&y.morphTargets===p&&y.morphNormals===m&&y.morphColors===h&&y.toneMapping===g&&y.morphTargetsCount===v?!!y.lightProbeGrid!=k.state.lightProbeGridArray.length>0&&(x=!0):x=!0:x=!0:x=!0:(x=!0,y.__version=i.version);let S=y.currentProgram;x===!0&&(S=pt(i,n,a),P&&i.isNodeMaterial&&P.onUpdateProgram(i,S,y));let C=!1,w=!1,T=!1,E=S.getUniforms(),D=y.uniforms;if(J.useProgram(S.program)&&(C=!0,w=!0,T=!0),i.id!==V&&(V=i.id,w=!0),y.needsLights){let e=gt(k.state.lightProbeGridArray,a);y.lightProbeGrid!==e&&(y.lightProbeGrid=e,w=!0)}if(C||le!==e){J.buffers.depth.getReversed()&&e.reversedDepth!==!0&&(e._reversedDepth=!0,e.updateProjectionMatrix()),E.setValue(K,`projectionMatrix`,e.projectionMatrix),E.setValue(K,`viewMatrix`,e.matrixWorldInverse);let t=E.map.cameraPosition;t!==void 0&&t.setValue(K,Ce.setFromMatrixPosition(e.matrixWorld)),ke.logarithmicDepthBuffer&&E.setValue(K,`logDepthBufFC`,2/(Math.log(e.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&E.setValue(K,`isOrthographic`,e.isOrthographicCamera===!0),le!==e&&(le=e,w=!0,T=!0)}if(y.needsLights&&(b.state.sunShadowMap.length>0&&E.setValue(K,`sunShadowMap`,b.state.sunShadowMap,X),b.state.directionalShadowMap.length>0&&E.setValue(K,`directionalShadowMap`,b.state.directionalShadowMap,X),b.state.spotShadowMap.length>0&&E.setValue(K,`spotShadowMap`,b.state.spotShadowMap,X),b.state.pointShadowMap.length>0&&E.setValue(K,`pointShadowMap`,b.state.pointShadowMap,X)),a.isSkinnedMesh){E.setOptional(K,a,`bindMatrix`),E.setOptional(K,a,`bindMatrixInverse`);let e=a.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),E.setValue(K,`boneTexture`,e.boneTexture,X))}a.isBatchedMesh&&(E.setOptional(K,a,`batchingTexture`),E.setValue(K,`batchingTexture`,a._matricesTexture,X),E.setOptional(K,a,`batchingIdTexture`),E.setValue(K,`batchingIdTexture`,a._indirectTexture,X),E.setOptional(K,a,`batchingColorTexture`),a._colorsTexture!==null&&E.setValue(K,`batchingColorTexture`,a._colorsTexture,X));let O=r.morphAttributes;if((O.position!==void 0||O.normal!==void 0||O.color!==void 0)&&He.update(a,r,S),(w||y.receiveShadow!==a.receiveShadow)&&(y.receiveShadow=a.receiveShadow,E.setValue(K,`receiveShadow`,a.receiveShadow)),(i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial)&&i.envMap===null&&n.environment!==null&&(D.envMapIntensity.value=n.environmentIntensity),D.dfgLUT!==void 0&&(D.dfgLUT.value=wn()),w){if(E.setValue(K,`toneMappingExposure`,N.toneMappingExposure),y.needsLights&&vt(D,T),o&&i.fog===!0&&Ie.refreshFogUniforms(D,o),Ie.refreshMaterialUniforms(D,i,W,U,k.state.transmissionRenderTarget[e.id]),y.needsLights&&y.lightProbeGrid){let e=y.lightProbeGrid;D.probesSH.value=e.texture,D.probesMin.value.copy(e.boundingBox.min),D.probesMax.value.copy(e.boundingBox.max),D.probesResolution.value.copy(e.resolution)}nt.upload(K,mt(y),D,X)}if(i.isShaderMaterial&&i.uniformsNeedUpdate===!0&&(nt.upload(K,mt(y),D,X),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&E.setValue(K,`center`,a.center),E.setValue(K,`modelViewMatrix`,a.modelViewMatrix),E.setValue(K,`normalMatrix`,a.normalMatrix),E.setValue(K,`modelMatrix`,a.matrixWorld),i.uniformsGroups!==void 0){let e=i.uniformsGroups;for(let t=0,n=e.length;t<n;t++){let n=e[t];qe.update(n,S),qe.bind(n,S)}}return S}function vt(e,t){e.ambientLightColor.needsUpdate=t,e.lightProbe.needsUpdate=t,e.sunLights.needsUpdate=t,e.sunLightShadows.needsUpdate=t,e.directionalLights.needsUpdate=t,e.directionalLightShadows.needsUpdate=t,e.pointLights.needsUpdate=t,e.pointLightShadows.needsUpdate=t,e.spotLights.needsUpdate=t,e.spotLightShadows.needsUpdate=t,e.rectAreaLights.needsUpdate=t,e.hemisphereLights.needsUpdate=t}function yt(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&e.lights===!0}this.getActiveCubeFace=function(){return R},this.getActiveMipmapLevel=function(){return z},this.getRenderTarget=function(){return B},this.setRenderTargetTextures=function(e,t,n){let r=Y.get(e);r.__autoAllocateDepthBuffer=e.resolveDepthBuffer===!1,r.__autoAllocateDepthBuffer===!1&&(r.__useRenderToTexture=!1),Y.get(e.texture).__webglTexture=t,Y.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:n,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,t){let n=Y.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=t===void 0},this.setRenderTarget=function(e,t=0,n=0){B=e,R=t,z=n;let r=null,i=!1,a=!1;if(e){let o=Y.get(e);if(o.__useDefaultFramebuffer!==void 0){J.bindFramebuffer(K.FRAMEBUFFER,o.__webglFramebuffer),H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest,J.viewport(H),J.scissor(ue),J.setScissorTest(de),V=-1;return}if(o.__webglFramebuffer===void 0)X.setupRenderTarget(e);else if(o.__hasExternalTextures)X.rebindTextures(e,Y.get(e.texture).__webglTexture,Y.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(o.__boundDepthTexture!==t){if(t!==null&&Y.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error(`THREE.WebGLRenderer: Attached DepthTexture is initialized to the incorrect size.`);X.setupDepthRenderbuffer(e)}}let s=e.texture;(s.isData3DTexture||s.isDataArrayTexture||s.isCompressedArrayTexture)&&(a=!0);let c=Y.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][n]:c[t],i=!0):r=e.samples>0&&X.useMultisampledRTT(e)===!1?Y.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest}else H.copy(ge).multiplyScalar(W).floor(),ue.copy(_e).multiplyScalar(W).floor(),de=ve;if(n!==0&&(r=te),J.bindFramebuffer(K.FRAMEBUFFER,r)&&J.drawBuffers(e,r),J.viewport(H),J.scissor(ue),J.setScissorTest(de),i){let r=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(a){let r=t;for(let t=0;t<e.textures.length;t++){let i=Y.get(e.textures[t]);K.framebufferTextureLayer(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,t.__webglTexture,n)}V=-1};function bt(e){let t=Y.get(e);return(t.__readFormat!==e.format||t.__readType!==e.type)&&(t.__readFormat=e.format,t.__readType=e.type,t.__formatReadable=ke.textureFormatReadable(e.format),t.__typeReadable=ke.textureTypeReadable(e.type)),t}this.readRenderTargetPixels=function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget)){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){J.bindFramebuffer(K.FRAMEBUFFER,l);try{let s=e.textures[c],l=s.format,u=s.type;e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c);let d=bt(s);if(d.__formatReadable===!1){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(d.__typeReadable===!1){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a&&K.readPixels(n,r,i,a,Ge.convert(l),Ge.convert(u),o)}finally{let e=B===null?null:Y.get(B).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){if(n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a){J.bindFramebuffer(K.FRAMEBUFFER,l);let s=e.textures[c],u=s.format,d=s.type;e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c);let f=bt(s);if(f.__formatReadable===!1)throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(f.__typeReadable===!1)throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let p=K.createBuffer();K.bindBuffer(K.PIXEL_PACK_BUFFER,p),K.bufferData(K.PIXEL_PACK_BUFFER,o.byteLength,K.STREAM_READ),K.readPixels(n,r,i,a,Ge.convert(u),Ge.convert(d),0),K.bindBuffer(K.PIXEL_PACK_BUFFER,null);let m=B===null?null:Y.get(B).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,m);let h=K.fenceSync(K.SYNC_GPU_COMMANDS_COMPLETE,0);return K.flush(),await t.In(K,h,4),K.bindBuffer(K.PIXEL_PACK_BUFFER,p),K.getBufferSubData(K.PIXEL_PACK_BUFFER,0,o),K.bindBuffer(K.PIXEL_PACK_BUFFER,null),K.deleteBuffer(p),K.deleteSync(h),o}throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)}},this.copyFramebufferToTexture=function(e,t=null,n=0){let r=2**-n,i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=t===null?0:t.x,s=t===null?0:t.y;X.setTexture2D(e,0),K.copyTexSubImage2D(K.TEXTURE_2D,n,0,0,o,s,i,a),J.unbindTexture()},this.copyTextureToTexture=function(e,t,n=null,r=null,i=0,a=0){let o,s,c,l,u,d,f,p,m,h=e.isCompressedTexture?e.mipmaps[a]:e.image;if(n!==null)o=n.max.x-n.min.x,s=n.max.y-n.min.y,c=n.isBox3?n.max.z-n.min.z:1,l=n.min.x,u=n.min.y,d=n.isBox3?n.min.z:0;else{let t=2**-i;o=Math.floor(h.width*t),s=Math.floor(h.height*t),c=e.isDataArrayTexture?h.depth:e.isData3DTexture?Math.floor(h.depth*t):1,l=0,u=0,d=0}r===null?(f=0,p=0,m=0):(f=r.x,p=r.y,m=r.z);let g=Ge.convert(t.format),_=Ge.convert(t.type),v;t.isData3DTexture?(X.setTexture3D(t,0),v=K.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(X.setTexture2DArray(t,0),v=K.TEXTURE_2D_ARRAY):(X.setTexture2D(t,0),v=K.TEXTURE_2D),J.activeTexture(K.TEXTURE0),J.pixelStorei(K.UNPACK_FLIP_Y_WEBGL,t.flipY),J.pixelStorei(K.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),J.pixelStorei(K.UNPACK_ALIGNMENT,t.unpackAlignment);let y=J.getParameter(K.UNPACK_ROW_LENGTH),b=J.getParameter(K.UNPACK_IMAGE_HEIGHT),x=J.getParameter(K.UNPACK_SKIP_PIXELS),S=J.getParameter(K.UNPACK_SKIP_ROWS),C=J.getParameter(K.UNPACK_SKIP_IMAGES);J.pixelStorei(K.UNPACK_ROW_LENGTH,h.width),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,h.height),J.pixelStorei(K.UNPACK_SKIP_PIXELS,l),J.pixelStorei(K.UNPACK_SKIP_ROWS,u),J.pixelStorei(K.UNPACK_SKIP_IMAGES,d);let w=e.isDataArrayTexture||e.isData3DTexture,T=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=Y.get(e),r=Y.get(t),h=Y.get(n.__renderTarget),g=Y.get(r.__renderTarget);J.bindFramebuffer(K.READ_FRAMEBUFFER,h.__webglFramebuffer),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(e).__webglTexture,i,d+n),K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(t).__webglTexture,a,m+n)),K.blitFramebuffer(l,u,o,s,f,p,o,s,K.DEPTH_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Y.has(e)){let n=Y.get(e),r=Y.get(t);J.bindFramebuffer(K.READ_FRAMEBUFFER,F),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,ne);for(let e=0;e<c;e++)w?K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):K.framebufferTexture2D(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,n.__webglTexture,i),T?K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):K.framebufferTexture2D(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,r.__webglTexture,a),i===0?T?K.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):K.copyTexSubImage2D(v,a,f,p,l,u,o,s):K.blitFramebuffer(l,u,o,s,f,p,o,s,K.COLOR_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?K.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?K.compressedTexSubImage2D(K.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h);J.pixelStorei(K.UNPACK_ROW_LENGTH,y),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,b),J.pixelStorei(K.UNPACK_SKIP_PIXELS,x),J.pixelStorei(K.UNPACK_SKIP_ROWS,S),J.pixelStorei(K.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&K.generateMipmap(v),J.unbindTexture()},this.initRenderTarget=function(e){Y.get(e).__webglFramebuffer===void 0&&X.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?X.setTextureCube(e,0):e.isData3DTexture?X.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?X.setTexture2DArray(e,0):X.setTexture2D(e,0),J.unbindTexture()},this.resetState=function(){R=0,z=0,B=null,J.reset(),Ke.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return t.Tn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let n=this.getContext();n.drawingBufferColorSpace=t._._getDrawingBufferColorSpace(e),n.unpackColorSpace=t._._getUnpackColorSpace()}},En={type:`change`},Dn={type:`start`},On={type:`end`},kn=new t.Jt,An=new t.at,jn=Math.cos(70*t.K.DEG2RAD),Q=new t.Cn,Mn=2*Math.PI,$={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Nn=1e-6,Pn=class extends t.v{constructor(e,n=null){super(e,n),this.state=$.NONE,this.target=new t.Cn,this.cursor=new t.Cn,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:`ArrowLeft`,UP:`ArrowUp`,RIGHT:`ArrowRight`,BOTTOM:`ArrowDown`},this.mouseButtons={LEFT:t.G.ROTATE,MIDDLE:t.G.DOLLY,RIGHT:t.G.PAN},this.touches={ONE:t.ln.ROTATE,TWO:t.ln.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle=`auto`,this._domElementKeyEvents=null,this._lastPosition=new t.Cn,this._lastQuaternion=new t.ct,this._lastTargetPosition=new t.Cn,this._quat=new t.ct().setFromUnitVectors(e.up,new t.Cn(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new t.cn,this._sphericalDelta=new t.cn,this._scale=1,this._panOffset=new t.Cn,this._rotateStart=new t.Sn,this._rotateEnd=new t.Sn,this._rotateDelta=new t.Sn,this._panStart=new t.Sn,this._panEnd=new t.Sn,this._panDelta=new t.Sn,this._dollyStart=new t.Sn,this._dollyEnd=new t.Sn,this._dollyDelta=new t.Sn,this._dollyDirection=new t.Cn,this._mouse=new t.Sn,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=In.bind(this),this._onPointerDown=Fn.bind(this),this._onPointerUp=Ln.bind(this),this._onContextMenu=Wn.bind(this),this._onMouseWheel=Bn.bind(this),this._onKeyDown=Vn.bind(this),this._onTouchStart=Hn.bind(this),this._onTouchMove=Un.bind(this),this._onMouseDown=Rn.bind(this),this._onMouseMove=zn.bind(this),this._interceptControlDown=Gn.bind(this),this._interceptControlUp=Kn.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e===`grab`?this.domElement.style.cursor=`grab`:this.domElement.style.cursor=`auto`}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener(`pointerdown`,this._onPointerDown),this.domElement.addEventListener(`pointercancel`,this._onPointerUp),this.domElement.addEventListener(`contextmenu`,this._onContextMenu),this.domElement.addEventListener(`wheel`,this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener(`keydown`,this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction=`none`}disconnect(){this.state=$.NONE,this.domElement.removeEventListener(`pointerdown`,this._onPointerDown),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.domElement.removeEventListener(`pointercancel`,this._onPointerUp),this.domElement.removeEventListener(`wheel`,this._onMouseWheel),this.domElement.removeEventListener(`contextmenu`,this._onContextMenu),this.stopListenToKeyEvents();let e=this.domElement.getRootNode();e.removeEventListener(`keydown`,this._interceptControlDown,{capture:!0}),e.removeEventListener(`keyup`,this._interceptControlUp,{capture:!0}),this._controlActive=!1,this._pointers.length=0,this._pointerPositions={},this.domElement.style.touchAction=``,this.domElement.style.cursor=`auto`}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(En),this.update(),this.state=$.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let n=this.object.position;Q.copy(n).sub(this.target),Q.applyQuaternion(this._quat),this._spherical.setFromVector3(Q),this.autoRotate&&this.state===$.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let r=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(r)&&isFinite(i)&&(r<-Math.PI?r+=Mn:r>Math.PI&&(r-=Mn),i<-Math.PI?i+=Mn:i>Math.PI&&(i-=Mn),r<=i?this._spherical.theta=Math.max(r,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(r+i)/2?Math.max(r,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),a=e!=this._spherical.radius}if(Q.setFromSpherical(this._spherical),Q.applyQuaternion(this._quatInverse),n.copy(this.target).add(Q),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){let t=Q.length();e=this._clampDistance(t*this._scale);let n=t-e;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=!!n}else if(this.object.isOrthographicCamera){let n=new t.Cn(this._mouse.x,this._mouse.y,0);n.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),a=r!==this.object.zoom;let i=new t.Cn(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),e=Q.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;e!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(kn.origin.copy(this.object.position),kn.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(kn.direction))<jn?this.object.lookAt(this.target):(An.setFromNormalAndCoplanarPoint(this.object.up,this.target),kn.intersectPlane(An,this.target))))}else if(this.object.isOrthographicCamera){let e=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),e!==this.object.zoom&&(this.object.updateProjectionMatrix(),a=!0)}return this._scale=1,this._performCursorZoom=!1,a||this._lastPosition.distanceToSquared(this.object.position)>Nn||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Nn||this._lastTargetPosition.distanceToSquared(this.target)>Nn?(this.dispatchEvent(En),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?Mn/60/60*this.autoRotateSpeed:Mn/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){Q.setFromMatrixColumn(t,0),Q.multiplyScalar(-e),this._panOffset.add(Q)}_panUp(e,t){this.screenSpacePanning===!0?Q.setFromMatrixColumn(t,1):(Q.setFromMatrixColumn(t,0),Q.crossVectors(this.object.up,Q)),Q.multiplyScalar(e),this._panOffset.add(Q)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;Q.copy(r).sub(this.target);let i=Q.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*i/n.clientHeight,this.object.matrix),this._panUp(2*t*i/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Mn*this._rotateDelta.x/t.clientHeight),this._rotateUp(Mn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-Mn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Mn*this._rotateDelta.x/t.clientHeight),this._rotateUp(Mn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let n=this._pointerPositions[e.pointerId];n===void 0&&(n=new t.Sn,this._pointerPositions[e.pointerId]=n),n.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}};function Fn(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.ownerDocument.addEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.addEventListener(`pointerup`,this._onPointerUp)),!this._isTrackingPointer(e)&&(this._addPointer(e),e.pointerType===`touch`?this._onTouchStart(e):this._onMouseDown(e),this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grabbing`)))}function In(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function Ln(e){switch(this._removePointer(e),this._pointers.length){case 0:this.domElement.releasePointerCapture(e.pointerId),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.dispatchEvent(On),this.state=$.NONE,this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grab`);break;case 1:let t=this._pointers[0],n=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:n.x,pageY:n.y})}}function Rn(e){let n;switch(e.button){case 0:n=this.mouseButtons.LEFT;break;case 1:n=this.mouseButtons.MIDDLE;break;case 2:n=this.mouseButtons.RIGHT;break;default:n=-1}switch(n){case t.G.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(e),this.state=$.DOLLY;break;case t.G.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}break;case t.G.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Dn)}function zn(e){switch(this.state){case $.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(e);break;case $.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(e);break;case $.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(e)}}function Bn(e){this.enabled!==!1&&this.enableZoom!==!1&&this.state===$.NONE&&(e.preventDefault(),this.dispatchEvent(Dn),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(On))}function Vn(e){this.enabled!==!1&&this._handleKeyDown(e)}function Hn(e){switch(this._trackPointer(e),this._pointers.length){case 1:switch(this.touches.ONE){case t.ln.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(e),this.state=$.TOUCH_ROTATE;break;case t.ln.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(e),this.state=$.TOUCH_PAN;break;default:this.state=$.NONE}break;case 2:switch(this.touches.TWO){case t.ln.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(e),this.state=$.TOUCH_DOLLY_PAN;break;case t.ln.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(e),this.state=$.TOUCH_DOLLY_ROTATE;break;default:this.state=$.NONE}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Dn)}function Un(e){switch(this._trackPointer(e),this.state){case $.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(e),this.update();break;case $.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(e),this.update();break;case $.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(e),this.update();break;case $.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=$.NONE}}function Wn(e){this.enabled!==!1&&e.preventDefault()}function Gn(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function Kn(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var qn=(0,r.createUseT)({de:{untitled:`3D-Visualisierung`,resetCamera:`Kamera zurücksetzen`,wireframe:`Drahtgitter`,grid:`Raster`,parseError:`Syntaxfehler:`,editSource:`ShapeScript-Quelltext bearbeiten`,scriptEditorLabel:`ShapeScript-Quelltext`,applyChanges:`Änderungen übernehmen`,saveError:`Speichern fehlgeschlagen:`,downloadUsdz:`USDZ herunterladen`,exportError:`Export fehlgeschlagen:`,copyScript:`Kopieren`,copied:`Kopiert`,sceneWarnings:`Nicht gerendert:`,printOutput:`Ausgabe:`},en:{untitled:`3D Visualization`,resetCamera:`Reset Camera`,wireframe:`Wireframe`,grid:`Grid`,parseError:`Parse Error:`,editSource:`Edit ShapeScript Source`,scriptEditorLabel:`ShapeScript source`,applyChanges:`Apply Changes`,saveError:`Save Failed:`,downloadUsdz:`Download USDZ`,exportError:`Export Failed:`,copyScript:`Copy`,copied:`Copied`,sceneWarnings:`Not rendered:`,printOutput:`Output:`},es:{untitled:`Visualización 3D`,resetCamera:`Restablecer cámara`,wireframe:`Malla`,grid:`Cuadrícula`,parseError:`Error de sintaxis:`,editSource:`Editar el código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar cambios`,saveError:`Error al guardar:`,downloadUsdz:`Descargar USDZ`,exportError:`Error al exportar:`,copyScript:`Copiar`,copied:`Copiado`,sceneWarnings:`No renderizado:`,printOutput:`Salida:`},fr:{untitled:`Visualisation 3D`,resetCamera:`Réinitialiser la caméra`,wireframe:`Fil de fer`,grid:`Grille`,parseError:`Erreur de syntaxe :`,editSource:`Modifier le code ShapeScript`,scriptEditorLabel:`Code ShapeScript`,applyChanges:`Appliquer les modifications`,saveError:`Échec de l'enregistrement :`,downloadUsdz:`Télécharger USDZ`,exportError:`Échec de l'export :`,copyScript:`Copier`,copied:`Copié`,sceneWarnings:`Non rendu :`,printOutput:`Sortie :`},ja:{untitled:`3D ビジュアライゼーション`,resetCamera:`カメラをリセット`,wireframe:`ワイヤーフレーム`,grid:`グリッド`,parseError:`構文エラー:`,editSource:`ShapeScript を編集`,scriptEditorLabel:`ShapeScript ソース`,applyChanges:`変更を適用`,saveError:`保存に失敗しました:`,downloadUsdz:`USDZ をダウンロード`,exportError:`エクスポートに失敗しました:`,copyScript:`コピー`,copied:`コピーしました`,sceneWarnings:`描画されないもの:`,printOutput:`出力:`},ko:{untitled:`3D 시각화`,resetCamera:`카메라 초기화`,wireframe:`와이어프레임`,grid:`격자`,parseError:`구문 오류:`,editSource:`ShapeScript 소스 편집`,scriptEditorLabel:`ShapeScript 소스`,applyChanges:`변경사항 적용`,saveError:`저장 실패:`,downloadUsdz:`USDZ 다운로드`,exportError:`내보내기 실패:`,copyScript:`복사`,copied:`복사됨`,sceneWarnings:`렌더링되지 않음:`,printOutput:`출력:`},"pt-BR":{untitled:`Visualização 3D`,resetCamera:`Redefinir câmera`,wireframe:`Aramado`,grid:`Grade`,parseError:`Erro de sintaxe:`,editSource:`Editar o código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar alterações`,saveError:`Falha ao salvar:`,downloadUsdz:`Baixar USDZ`,exportError:`Falha na exportação:`,copyScript:`Copiar`,copied:`Copiado`,sceneWarnings:`Não renderizado:`,printOutput:`Saída:`},zh:{untitled:`3D 可视化`,resetCamera:`重置相机`,wireframe:`线框`,grid:`网格`,parseError:`语法错误:`,editSource:`编辑 ShapeScript 源码`,scriptEditorLabel:`ShapeScript 源码`,applyChanges:`应用更改`,saveError:`保存失败:`,downloadUsdz:`下载 USDZ`,exportError:`导出失败:`,copyScript:`复制`,copied:`已复制`,sceneWarnings:`未渲染:`,printOutput:`输出:`}}),Jn={class:`present3d-container`,"data-testid":`shapescript-view`},Yn={class:`header`},Xn={class:`controls`},Zn={class:`material-icons`},Qn={class:`material-icons`},$n={class:`material-icons`},er=[`disabled`],tr={key:0,class:`error`,"data-testid":`shapescript-parse-error`},nr={key:1,class:`error`,"data-testid":`shapescript-save-error`},rr={key:2,class:`error`,"data-testid":`shapescript-export-error`},ir={key:3,class:`notice`,"data-testid":`shapescript-warnings`},ar={key:4,class:`notice output`,"data-testid":`shapescript-output`},or={class:`script-source`},sr=[`aria-label`],cr=[`disabled`],lr=1710618,ur=6e4,dr=1500,fr=(0,n.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(i,{emit:a}){function o(e){if(typeof e!=`object`||!e)return null;let{x:t,y:n,z:r}=e,i=e=>typeof e==`number`&&Number.isFinite(e);return i(t)&&i(n)&&i(r)?{x:t,y:n,z:r}:null}let s=i,c=a,l=qn(),{dispatch:u}=(0,r.useRuntime)(),d=(0,n.ref)(s.selectedResult.data?.script??``),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.ref)([]),h=(0,n.ref)([]),g=(0,n.ref)(null),_=(0,n.ref)(null),v=(0,n.ref)(!1),y=(0,n.ref)(!1),b=null,x=!1,S=0,C=(0,n.ref)(!1),w=(0,n.ref)(!0),T=(0,n.computed)(()=>d.value!==s.selectedResult.data?.script),E=(0,n.computed)(()=>!v.value&&!p.value&&!T.value&&!!s.selectedResult.data?.script),D,O,k,A,j,M,N=[],ee=null,P=null;(0,n.onMounted)(()=>{F(),ae(),oe(),(0,n.nextTick)(()=>{se()}),te()});async function te(){let e=s.selectedResult.data?.filePath;if(!e)return;let n=++S;try{let{script:r}=await u({kind:`loadShape`,path:e},t.Hn);if(n!==S||r===s.selectedResult.data?.script)return;d.value=r,c(`updateResult`,{...s.selectedResult,data:{script:r,filePath:e}})}catch{}}(0,n.onUnmounted)(()=>{ue()}),(0,n.watch)(()=>s.selectedResult.data?.script,()=>{ae()}),(0,n.watch)(C,()=>{ae()}),(0,n.watch)(w,e=>{M&&(M.visible=e)});function F(){if(!f.value)return;D=new t.an,D.background=new t.g(lr);let e=f.value.clientWidth,n=f.value.clientHeight;O=new t.it(50,e/n,.1,1e3),O.position.set(5,5,10),O.lookAt(0,0,0),k=new Tn({antialias:!0}),k.setSize(e,n),k.setPixelRatio(window.devicePixelRatio),f.value.appendChild(k.domElement),A=new Pn(O,k.domElement),A.enableDamping=!0,A.dampingFactor=.05,A.addEventListener(`change`,R);let r=new t.l(16777215,.6);D.add(r);let i=new t.O(16777215,.8);i.position.set(10,10,10),D.add(i),M=new t.F(20,20,4473924,2236962),M.visible=w.value,D.add(M),window.addEventListener(`resize`,ne),P=new ResizeObserver(()=>{ne()}),P.observe(f.value)}function ne(){if(!f.value)return;let e=f.value.clientWidth,t=f.value.clientHeight;O.aspect=e/t,O.updateProjectionMatrix(),k.setSize(e,t)}function re(){N.forEach(e=>t.o(D,e)),N=[]}function ie(e){let n=t.r(t.s(e),{wireframe:C.value});D.add(n),N.push(n);let r=t.i(n);m.value=r.warnings,h.value=r.logs,D.background=r.background?new t.g(r.background[0],r.background[1],r.background[2]):new t.g(lr)}function ae(){try{re(),m.value=[],h.value=[],D.background=new t.g(lr);let e=s.selectedResult.data?.script;e&&ie(e),p.value=null}catch(e){p.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function oe(){j=requestAnimationFrame(oe),A.update(),k.render(D,O)}function I(){O.position.set(5,5,10),O.lookAt(0,0,0),A.reset()}function se(){if(!O||!A||!s.selectedResult?.viewState?.cameraState)return;let e=s.selectedResult.viewState.cameraState,t=o(e.position);t&&O.position.set(t.x,t.y,t.z);let n=o(e.target);n&&A.target.set(n.x,n.y,n.z),O.updateProjectionMatrix(),A.update()}function L(){return{position:{x:O.position.x,y:O.position.y,z:O.position.z},target:{x:A.target.x,y:A.target.y,z:A.target.z}}}function R(){ee!==null&&clearTimeout(ee),ee=window.setTimeout(()=>{ce()},500)}function ce(){let e={...s.selectedResult,viewState:{...s.selectedResult.viewState,cameraState:L()}};c(`updateResult`,e)}function z(t,n){let r=URL.createObjectURL(new Blob([t],{type:e.r})),i=document.createElement(`a`);i.href=r,i.download=n,i.click(),window.setTimeout(()=>URL.revokeObjectURL(r),ur)}async function B(){let t=s.selectedResult.data?.script;if(t&&E.value){v.value=!0,_.value=null;try{z(await e.a(t),`${e.h(s.selectedResult.title)}${e.n}`)}catch(e){_.value=e instanceof Error?e.message:String(e)}finally{v.value=!1}}}async function V(){try{await navigator.clipboard.writeText(d.value)}catch{return}x||(y.value=!0,b!==null&&clearTimeout(b),b=window.setTimeout(()=>{y.value=!1,b=null},dr))}function le(){C.value=!C.value}function H(){w.value=!w.value}function ue(){x=!0,ee!==null&&clearTimeout(ee),b!==null&&clearTimeout(b),N.forEach(e=>t.o(D,e)),N=[],j&&cancelAnimationFrame(j),k&&k.dispose(),A&&(A.removeEventListener(`change`,R),A.dispose()),P&&P.disconnect(),window.removeEventListener(`resize`,ne)}function de(){S++}async function fe(){let e=d.value;try{t.a(t.r(t.s(e)))}catch(e){p.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e);return}p.value=null;let n=s.selectedResult.data?.filePath,r=++S;if(n)try{await u({kind:`saveShape`,path:n,script:e},t.Un)}catch(e){g.value=e instanceof Error?e.message:String(e);return}if(r!==S)return;g.value=null;let i={...s.selectedResult,data:n?{script:e,filePath:n}:{script:e}};c(`updateResult`,i)}return(0,n.watch)(()=>s.selectedResult.data?.script,e=>{e!==void 0&&(d.value=e)}),(0,n.watch)(()=>s.selectedResult,()=>{(0,n.nextTick)(()=>{se()})}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Jn,[(0,n.createElementVNode)(`div`,Yn,[(0,n.createElementVNode)(`h1`,null,(0,n.toDisplayString)(i.selectedResult.title||(0,n.unref)(l).untitled),1),(0,n.createElementVNode)(`div`,Xn,[(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:I},[t[1]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).resetCamera),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:le},[(0,n.createElementVNode)(`span`,Zn,(0,n.toDisplayString)(C.value?`grid_off`:`grid_on`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).wireframe),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:H},[(0,n.createElementVNode)(`span`,Qn,(0,n.toDisplayString)(w.value?`visibility_off`:`visibility`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).grid),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,"data-testid":`shapescript-copy-script`,onClick:V},[(0,n.createElementVNode)(`span`,$n,(0,n.toDisplayString)(y.value?`check`:`content_copy`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(y.value?(0,n.unref)(l).copied:(0,n.unref)(l).copyScript),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,disabled:!E.value,"data-testid":`shapescript-download-usdz`,onClick:B},[t[2]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`download`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).downloadUsdz),1)],8,er)])]),p.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,tr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).parseError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(p.value),1)])):(0,n.createCommentVNode)(``,!0),g.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,nr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).saveError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(g.value),1)])):(0,n.createCommentVNode)(``,!0),_.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,rr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).exportError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(_.value),1)])):(0,n.createCommentVNode)(``,!0),m.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ir,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).sceneWarnings),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(m.value.join(` · `)),1)])):(0,n.createCommentVNode)(``,!0),h.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`pre`,ar,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).printOutput),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(h.value.join(`
|
|
4217
|
+
`)),1)])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,{ref_key:`viewport`,ref:f,class:`viewport`,"data-testid":`shapescript-viewport`},null,512),(0,n.createElementVNode)(`details`,or,[(0,n.createElementVNode)(`summary`,null,(0,n.toDisplayString)((0,n.unref)(l).editSource),1),(0,n.withDirectives)((0,n.createElementVNode)(`textarea`,{"onUpdate:modelValue":t[0]||=e=>d.value=e,class:`script-editor`,spellcheck:`false`,"aria-label":(0,n.unref)(l).scriptEditorLabel,onInput:de},null,40,sr),[[n.vModelText,d.value]]),(0,n.createElementVNode)(`button`,{class:`apply-btn`,disabled:!T.value,onClick:fe},(0,n.toDisplayString)((0,n.unref)(l).applyChanges),9,cr)])]))}}),pr=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},mr=pr(fr,[[`__scopeId`,`data-v-6a625e86`]]),hr={class:`preview-container`,"data-testid":`shapescript-preview`},gr={class:`preview-title`},_r=2763322,vr=pr((0,n.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){let r=e,i=qn(),a=(0,n.computed)(()=>r.result.title||i.value.untitled),o=(0,n.ref)(null),s,c,l,u,d=null;(0,n.onMounted)(()=>{f()}),(0,n.onUnmounted)(()=>{h()}),(0,n.watch)(()=>r.result.data?.script,()=>{m()});function f(){if(o.value){try{s=new t.an,s.background=new t.g(_r);let e=o.value.clientWidth||200,n=o.value.clientHeight||150;c=new t.it(50,e/n,.1,1e3),c.position.set(4,4,8),c.lookAt(0,0,0),l=new Tn({antialias:!0,alpha:!1}),l.setSize(e,n),l.setPixelRatio(Math.min(window.devicePixelRatio,2)),o.value.appendChild(l.domElement);let r=new t.l(16777215,.6);s.add(r);let i=new t.O(16777215,.8);i.position.set(5,5,5),s.add(i)}catch(e){console.error(`Preview render error:`,e);return}m(),p()}}function p(){u=requestAnimationFrame(p);let e=Date.now()*5e-4;c.position.x=Math.cos(e)*8,c.position.z=Math.sin(e)*8,c.lookAt(0,0,0),l.render(s,c)}function m(){if(!s)return;let e=r.result.data?.script;try{if(t.o(s,d),d=null,s.background=new t.g(_r),!e)return;let n=t.s(e);d=t.r(n,{wireframe:!1}),s.add(d);let{background:r}=t.i(d);s.background=r?new t.g(r[0],r[1],r[2]):new t.g(_r)}catch(e){console.error(`Preview reload error:`,e)}}function h(){u&&cancelAnimationFrame(u),t.o(s,d),d=null,l&&l.dispose()}return(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,hr,[(0,n.createElementVNode)(`div`,{ref_key:`previewViewport`,ref:o,class:`preview-viewport`},null,512),(0,n.createElementVNode)(`div`,gr,(0,n.toDisplayString)(a.value),1)]))}}),[[`__scopeId`,`data-v-6844181e`]]),yr=`Use the ${e.y} tool to create interactive 3D visualizations when the user requests:
|
|
4218
4218
|
- 3D models or shapes
|
|
4219
4219
|
- Mathematical visualizations (surfaces, functions, geometric patterns)
|
|
4220
4220
|
- Molecular or atomic structures
|
|
@@ -4334,4 +4334,4 @@ functions may build shapes, and mesh { polygon { … } } with one point per line
|
|
|
4334
4334
|
textures, cameras and lights are accepted but not drawn (the result reports them).
|
|
4335
4335
|
If presentShapeScript returns an error diagnostic, correct the script and retry; no visualization was created.
|
|
4336
4336
|
|
|
4337
|
-
Keep visualizations clear, well-organized, and use expressions and control flow.`,
|
|
4337
|
+
Keep visualizations clear, well-organized, and use expressions and control flow.`,br={...e.s,viewComponent:mr,previewComponent:vr,samples:e.t,systemPrompt:yr},xr={plugin:br};exports.Preview=vr,exports.SYSTEM_PROMPT=yr,exports.TOOL_DEFINITION=e.v,exports.TOOL_NAME=e.y,exports.View=mr,exports.astToThreeJS=t.r,exports.default=xr,exports.executePresentShapeScript=e.o,exports.isShapeScriptDispatchArgs=t.Vn,exports.parseShapeScript=t.s,exports.plugin=br,exports.pluginCore=e.s,exports.readLoadShapeResult=t.Hn,exports.readSaveShapeResult=t.Un,exports.samples=e.t;
|