{"version":3,"sources":["webpack:///./node_modules/core-js/internals/engine-ff-version.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./src/components/SiloCanvas.vue?dee1","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./src/components/RegisterSilo.vue?44bf","webpack:///./src/components/Loading.vue","webpack:///./src/components/Loading.vue?b977","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/internals/engine-webkit-version.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/components/ModalAlert.vue","webpack:///./src/components/ModalAlert.vue?889a","webpack:///./src/utils/modal_colors.ts","webpack:///./src/components/Loading.vue?920e","webpack:///./src/store/registration.ts","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./src/components/ModalAlert.vue?6bfa","webpack:///./src/store/dashboard.ts","webpack:///./node_modules/three/build/three.module.js","webpack:///./src/components/SiloCanvas.vue","webpack:///./src/components/SiloCanvas.vue?641f","webpack:///./src/components/RegisterSilo.vue","webpack:///./src/components/RegisterSilo.vue?f198","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/internals/array-sort.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/internals/engine-is-ie-or-edge.js"],"names":["userAgent","firefox","match","module","exports","global","toIntegerOrInfinity","toString","requireObjectCoercible","RangeError","count","str","this","result","n","Infinity","DOMIterables","DOMTokenListPrototype","forEach","createNonEnumerableProperty","handlePrototype","CollectionPrototype","error","COLLECTION_NAME","prototype","$forEach","arrayMethodIsStrict","STRICT_METHOD","callbackfn","arguments","length","undefined","$","uncurryThis","notARegExp","correctIsRegExpLogic","stringIndexOf","indexOf","target","proto","forced","includes","searchString","class","script","__exports__","render","valueOf","isObject","classof","wellKnownSymbol","MATCH","it","isRegExp","$filter","filter","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","aCallable","toObject","lengthOfArrayLike","fails","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","test","un$Sort","sort","push","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","code","chr","value","index","String","fromCharCode","k","v","a","b","charAt","FORCED","getSortCompare","comparefn","x","y","array","itemsLength","items","arrayLength","webkit","whitespaces","replace","whitespace","ltrim","RegExp","rtrim","createMethod","TYPE","$this","string","start","end","trim","TypeError","_hoisted_1","key","_hoisted_2","_hoisted_3","_hoisted_4","style","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","props","show","type","Boolean","required","title","message","colors","emits","setup","__props","emit","_ctx","base_color","light_color","dark_color","emitShow","emitConfirm","_cache","name","default","onClick","$event","id","$slots","_","warning_colors","error_colors","neutral_colors","good_colors","MAIN_STORE","useRegistrationStore","state","foods","actions","getSiloProfile","pk","getFromAPI","siloProfile","getSiloAcquisition","fetchFoods","data","results","next","concat","registerUser","postOnAPI","user_posted","employee","user","phone_number","company","parseInt","role","associated_farm","registerCompany","farms","company_posted","reference_weight_curve","curve","registerSilo","silo_data","getters","getFoods","$find","find","addToUnscopables","FIND","SKIPS_HOLES","Array","useDashboardStore","companies","visibility","setHomeInfo","Error","setVisibility","getVisibility","getCompanies","getFarms","localeCompare","getBarns","barns","farm","getAllSensors","sensors","barn","getActiveSensors","is_last_batch_active","getSensorsInstalled","sensor","status","getSmartCamSensors","item","getSmartMicSensors","getSmartFeedSensors","getActiveSmartFeedSensors","getFarmByBarn","barn_pk","map","getBarnByPK","REVISION","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","SRGBColorSpace","LinearSRGBColorSpace","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","GLSL3","_SRGBAFormat","EventDispatcher","listener","_listeners","listeners","listenerArray","splice","event","slice","i","l","call","_lut","DEG2RAD","Math","PI","RAD2DEG","generateUUID","d0","random","d1","d2","d3","uuid","toLowerCase","clamp","min","max","euclideanModulo","m","lerp","t","isPowerOfTwo","floorPowerOfTwo","pow","floor","log","LN2","denormalize","constructor","Float32Array","Uint16Array","Uint8Array","Int16Array","Int8Array","normalize","round","Vector2","isVector2","scalar","s","multiplyScalar","e","elements","minVal","maxVal","divideScalar","ceil","sqrt","abs","angle","atan2","distanceToSquared","dx","dy","alpha","v1","v2","offset","attribute","getX","getY","center","c","cos","sin","Symbol","iterator","Matrix3","isMatrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","set","me","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","invert","transpose","r","tx","ty","sx","sy","rotation","cx","cy","theta","matrix","fromArray","arrayNeedsUint32","Uint8ClampedArray","Int32Array","Uint32Array","Float64Array","createElementNS","document","SRGBToLinear","LinearToSRGB","FN","ColorManagement","legacyMode","colorSpace","console","warn","convert","color","sourceColorSpace","targetColorSpace","fn","fromWorkingColorSpace","workingColorSpace","toWorkingColorSpace","_colorKeywords","_rgb","_hslA","_hslB","hue2rgb","p","q","toComponents","source","Color","isColor","setRGB","copy","setHex","setStyle","hex","handleAlpha","parseFloat","exec","components","setHSL","size","setColorName","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","delta","getHSL","color1","color2","getZ","_canvas","NAMES","ImageUtils","image","src","HTMLCanvasElement","canvas","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","HTMLImageElement","ImageBitmap","imageData","getImageData","Source","isSource","version","meta","isRootObject","images","output","url","isArray","isDataTexture","serializeImage","getDataURL","from","textureId","Texture","DEFAULT_IMAGE","mapping","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","super","isTexture","Object","defineProperty","mipmaps","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","userData","onUpdate","isRenderTargetTexture","needsPMREMUpdate","setUvTransform","JSON","parse","stringify","needsUpdate","textures","metadata","generator","toJSON","wrap","dispatchEvent","uv","applyMatrix3","Vector4","z","w","isVector4","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getW","WebGLRenderTarget","options","isWebGLRenderTarget","depth","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","samples","dispose","clone","assign","DataArrayTexture","isDataArrayTexture","wrapR","Data3DTexture","isData3DTexture","Quaternion","isQuaternion","_x","_y","_z","_w","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","Number","EPSILON","len","tDir","_onChangeCallback","quaternion","euler","update","order","_order","c1","c2","c3","s1","s2","s3","axis","halfAngle","trace","vFrom","vTo","dot","step","angleTo","slerp","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","u1","sqrt1u1","sqrtu1","u2","u3","callback","Vector3","isVector3","applyQuaternion","_quaternion$4","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector$c","projectOnVector","sub","normal","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","u","Box3","isBox3","minX","minY","minZ","maxX","maxY","maxZ","points","makeEmpty","il","expandByPoint","halfSize","_vector$b","add","object","precise","expandByObject","box","isEmpty","addVectors","subVectors","point","vector","addScalar","updateWorldMatrix","geometry","attributes","position","fromBufferAttribute","boundingBox","computeBoundingBox","_box$3","union","children","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","clampedPoint","getSize","_points","setFromPoints","equals","_testAxis","v0","extents","j","p0","p1","p2","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","at","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","b1","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","sign","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","isMatrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","scale","x2","y2","z2","wx","wy","wz","determinant","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","left","right","top","bottom","near","far","_matrix$1","_quaternion$3","Euler","DefaultOrder","isEuler","asin","makeRotationFromQuaternion","newOrder","setFromQuaternion","RotationOrders","Layers","mask","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","isObject3D","parent","DefaultUp","onRotationChange","onQuaternionChange","_onChange","defineProperties","configurable","enumerable","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","matrixWorldAutoUpdate","DefaultMatrixWorldAutoUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","animations","updateMatrix","premultiply","decompose","multiply","rotateOnAxis","distance","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","remove","getObjectByProperty","child","traverse","traverseVisible","traverseAncestors","force","updateMatrixWorld","updateParents","updateChildren","geometries","materials","shapes","skeletons","nodes","serialize","library","element","toArray","isInstancedMesh","instanceMatrix","instanceColor","isScene","background","environment","isMesh","isLine","isPoints","parameters","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","animation","extractFromCache","cache","values","recursive","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getBarycoord","p3","uv1","uv2","uv3","addScaledVector","i0","i1","i2","getNormal","setFromCoplanarPoints","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","d5","d6","vb","va","materialId","Material","isMaterial","blending","side","vertexColors","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","onBeforeCompile","newValue","currentValue","roughness","metalness","sheen","sheenColor","sheenRoughness","emissive","emissiveIntensity","specular","specularIntensity","specularColor","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","iridescence","iridescenceIOR","iridescenceThicknessRange","iridescenceMap","iridescenceThicknessMap","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularColorMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","sizeAttenuation","linewidth","dashSize","gapSize","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","flatShading","fog","srcPlanes","dstPlanes","MeshBasicMaterial","isMeshBasicMaterial","setValues","_vector$9","_vector2$1","BufferAttribute","itemSize","normalized","isBufferAttribute","usage","updateRange","index1","index2","setXY","setXYZ","applyNormalMatrix","onUploadCallback","Uint16BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","_id$1","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","isBufferGeometry","morphAttributes","morphTargetsRelative","groups","boundingSphere","drawRange","materialIndex","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","negate","translate","setAttribute","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","isNaN","jl","indices","positions","normals","uvs","nVertices","hasAttribute","tangents","getAttribute","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","isFinite","group","tmp2","n2","handleVertex","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","normalizeNormals","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","keys","hasMorphAttributes","attributeArray","setIndex","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","ml","raycaster","intersects","intersectsBox","intersection","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","face","checkIntersection","intersect","intersectTriangle","morphInfluences","influence","boneTransform","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","property","mergeUniforms","uniforms","merged","cloneUniformsGroups","UniformsUtils","merge","default_vertex","default_fragment","ShaderMaterial","isShaderMaterial","defines","uniformsGroups","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","uniform","Camera","PerspectiveCamera","fov","aspect","isPerspectiveCamera","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","tan","fullWidth","fullHeight","enabled","offsetX","offsetY","skew","getFilmWidth","makePerspective","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentRenderTarget","getRenderTarget","currentToneMapping","toneMapping","currentXrEnabled","xr","setRenderTarget","CubeTexture","isCubeTexture","WebGLCubeRenderTarget","isWebGLCubeRenderTarget","shader","tEquirect","mesh","currentMinFilter","stencil","clear","_vector1","_vector2","_normalMatrix","Plane","isPlane","setFromNormalAndCoplanarPoint","inverseNormalLength","line","startSign","endSign","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","requestAnimationFrame","stop","cancelAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","createBuffer","bufferType","buffer","bindBuffer","bufferData","isFloat16BufferAttribute","bytesPerElement","BYTES_PER_ELEMENT","updateBuffer","bufferSubData","subarray","get","deleteBuffer","delete","cached","elementSize","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","iridescence_fragment","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","iridescence_pars_fragment","output_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","vertex$g","fragment$g","vertex$f","fragment$f","vertex$e","fragment$e","vertex$d","fragment$d","vertex$c","fragment$c","vertex$b","fragment$b","vertex$a","fragment$a","vertex$9","fragment$9","vertex$8","fragment$8","vertex$7","fragment$7","vertex$6","fragment$6","vertex$5","fragment$5","vertex$4","fragment$4","vertex$3","fragment$3","vertex$2","fragment$2","vertex$1","fragment$1","ShaderChunk","background_vert","background_frag","cube_vert","cube_frag","depth_vert","depth_frag","distanceRGBA_vert","distanceRGBA_frag","equirect_vert","equirect_frag","linedashed_vert","linedashed_frag","meshbasic_vert","meshbasic_frag","meshlambert_vert","meshlambert_frag","meshmatcap_vert","meshmatcap_frag","meshnormal_vert","meshnormal_frag","meshphong_vert","meshphong_frag","meshphysical_vert","meshphysical_frag","meshtoon_vert","meshtoon_frag","points_vert","points_frag","shadow_vert","shadow_frag","sprite_vert","sprite_frag","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","ior","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotLightMap","spotShadowMap","spotLightMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","objects","clearColor","planeMesh","boxMesh","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","renderList","forceClear","session","getSession","environmentBlendMode","setClear","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","enableAll","unshift","getClearColor","setClearColor","getClearAlpha","setClearAlpha","WebGLBindingStates","maxVertexAttributes","getParameter","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","forceUpdate","program","updateBuffers","getBindingState","bindVertexArrayObject","saveCache","setupVertexAttributes","createVertexArrayObject","createVertexArray","createVertexArrayOES","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","programAttributes","getAttributes","programAttribute","location","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","isInstancedBufferGeometry","materialDefaultAttributeValues","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","has","MAX_TEXTURE_MAX_ANISOTROPY_EXT","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","cubemap","fromEquirectangularTexture","addEventListener","onTextureDispose","removeEventListener","physical","iridescenceThicknessMinimum","iridescenceThicknessMaximum","sheenColorMap","sheenRoughnessMap","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","isOrthographicCamera","scaleW","scaleH","makeOrthographic","LOD_MIN","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_lodMax","_cubeSize","_lodPlanes","_sizeLods","_sigmas","_blurMaterial","_cubemapMaterial","_equirectMaterial","_compileMaterial","sigma","_setSize","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapMaterial","_getEquirectMaterial","_dispose","cubeSize","log2","outputTarget","_setViewport","_textureToCubeUV","params","_createRenderTarget","sizeLods","lodPlanes","sigmas","_createPlanes","_getBlurShader","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","backgroundMaterial","backgroundBox","useSolidColor","col","poleAxis","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weights","sum","weight","exp","outputSize","lodMax","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","fill","shaderMaterial","_getCommonVertexShader","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","fromEquirectangular","fromCubemap","isCubeTextureComplete","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","instanceCount","programs","autoReset","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","morphTextures","morph","workInfluences","objectInfluences","morphTargetsCount","entry","hasMorphPosition","hasMorphNormals","hasMorphColors","morphTargets","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","disposeTexture","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","influences","MAX_SAFE_INTEGER","WebGLObjects","updateMap","buffergeometry","hasEventListener","onInstancedMeshDispose","instancedMesh","emptyTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","unit","setTexture2D","setValueT3D1","setTexture3D","setValueT6","setTextureCube","setValueT2DArray1","setTexture2DArray","getSingularSetter","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","SingleUniform","activeInfo","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","programIdCount","handleSource","errorLine","split","lines2","to","join","getEncodingComponents","getShaderErrors","getShaderParameter","errors","getShaderInfoLog","errorMatches","toUpperCase","getShaderSource","getTexelEncodingFunction","functionName","getToneMappingFunction","toneMappingName","generateExtensions","chunks","extensionDerivatives","envMapCubeUVHeight","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filterEmptyLine","generateDefines","fetchAttributeLocations","getActiveAttrib","getAttribLocation","replaceLightNums","numSpotLightCoords","numSpotLightShadows","numSpotLightMaps","numSpotLightShadowsWithMaps","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","unrollLoopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","shadowMapType","generateEnvMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","generateCubeUVSize","imageHeight","maxMip","texelHeight","texelWidth","WebGLProgram","cacheKey","envMapCubeUVSize","customExtensions","customDefines","createProgram","prefixVertex","prefixFragment","versionString","isRawShaderMaterial","shaderName","instancing","instancingColor","supportsVertexTextures","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","morphTextureStride","doubleSided","flipSided","shadowMapEnabled","decodeVideoTexture","physicallyCorrectLights","opaque","outputEncoding","useDepthPacking","depthPacking","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","cachedUniforms","deleteShader","destroy","deleteProgram","usedTimes","_id","WebGLShaderCache","shaderCache","Map","materialCache","vertexShaderStage","_getShaderStage","fragmentShaderStage","materialShaders","_getShaderCacheForMaterial","shaderStage","Set","stage","WebGLShaderStage","WebGLPrograms","cubeuvmaps","_programLayers","_customShaders","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","getParameters","shadows","isMeshStandardMaterial","customVertexShaderID","customFragmentShaderID","getVertexShaderID","getFragmentShaderID","useAlphaTest","useClearcoat","useIridescence","isXRRenderTarget","isVideoTexture","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","getProgramCacheKeyParameters","getProgramCacheKeyBooleans","morphAttributeCount","disableAll","enable","acquireProgram","pl","preexistingProgram","releaseProgram","pop","releaseShaderCache","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","transmissive","getNextRenderItem","renderItem","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","listArray","list","UniformsCache","light","halfWidth","halfHeight","ShadowUniformsCache","nextVersion","shadowCastingAndTexturingLightsFirst","lightA","lightB","WebGLLights","shadowCache","hash","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","numSpotMaps","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","numSpotShadowsWithMaps","scaleFactor","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","updateMatrices","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderStateArray","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","0","1","2","shadowMaterialVertical","VSM_SAMPLES","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","customMaterial","customDistanceMaterial","customDepthMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","kl","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","pars","viewportCount","getViewportCount","vp","getViewport","getFrustum","isPointLightShadow","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","disable","depthMask","setFunc","clearDepth","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","colorBuffer","uboBindings","uboProgamMap","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","bindFramebuffer","framebuffer","isWebGLMultipleRenderTargets","drawBuffersWEBGL","useProgram","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","setMaterial","frontFaceCW","setPolygonOffset","frontFace","cullFace","setLineWidth","lineWidth","factor","activeTexture","webglSlot","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","apply","texSubImage2D","texSubImage3D","compressedTexSubImage2D","texStorage2D","texStorage3D","texImage3D","updateUBOMapping","uniformsGroup","blockIndex","getUniformBlockIndex","uniformBlockBinding","__bindingPointIndex","WebGLTextures","_gl","utils","multisampledRTTExt","supportsInvalidateFramebuffer","navigator","_videoTextures","_sources","useOffscreenCanvas","OffscreenCanvas","err","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","forceLinearEncoding","getMipLevels","isFramebufferTexture","isCompressedTexture","filterFallback","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","textureProperties","__webglInit","webglTextures","__cacheKey","deleteTexture","__webglTexture","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","textureUnits","resetTextureUnits","textureUnit","getTextureCacheKey","slot","updateVideoTexture","__version","complete","uploadTexture","uploadCubeTexture","wrappingToGL","filterToGL","setTextureParameters","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","initTexture","forceUpload","textureCacheKey","sourceProperties","pixelStorei","verifyColorSpace","mipmap","glInternalFormat","useTexStorage","allocateMemory","levels","isDepthTexture","isCompressed","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","__hasExternalTextures","useMultisampledRTT","framebufferTexture2DMultisampleEXT","getRenderTargetSamples","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","renderbufferStorageMultisampleEXT","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthTexture","isCube","webglDepthTexture","setupDepthRenderbuffer","__autoAllocateDepthBuffer","createRenderbuffer","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","createFramebuffer","glTextureType","isWebGL3DRenderTarget","isWebGLArrayRenderTarget","updateRenderTargetMipmap","updateMultisampleRenderTarget","invalidationArray","depthStyle","ignoreDepthValues","__ignoreDepthValues","invalidateFramebuffer","blitFramebuffer","__useRenderToTexture","sRGBToLinear","WebGLUtils","HALF_FLOAT_OES","SRGB_ALPHA_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR","COMPRESSED_RGBA_ASTC_10x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","isArrayCamera","cameras","Group","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","angularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","visibilityState","inputjoint","jointPose","getJointPose","jointName","joint","transform","jointRadius","indexTip","thumbTip","distanceToPinch","threshold","handedness","gripSpace","getPose","targetRaySpace","DepthTexture","WebXRManager","framebufferScaleFactor","referenceSpaceType","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","getContextAttributes","initialRenderTarget","newRenderTarget","controllers","controllerInputSources","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controllerIndex","controller","onSessionEnd","onInputSourcesChange","disconnect","isPresenting","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","setReferenceSpace","space","getBaseLayer","getBinding","getFrame","setSession","async","xrCompatible","makeXRCompatible","layerInit","antialias","XRWebGLLayer","updateRenderState","baseLayer","framebufferWidth","framebufferHeight","depthFormat","depthType","glDepthFormat","projectionlayerInit","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","setFoveation","requestReferenceSpace","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","translateX","translateZ","near2","far2","left2","right2","top2","bottom2","updateCamera","depthNear","depthFar","getCamera","getFoveation","fixedFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","setRenderTargetFramebuffer","cameraVRNeedsUpdate","glSubImage","getViewSubImage","setRenderTargetTextures","depthStencilTexture","WebGLMaterials","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","isMeshLambertMaterial","refreshUniformsCommon","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","refreshUniformsStandard","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDistance","isMeshNormalMaterial","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","uvScaleMap","uv2ScaleMap","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","bind","webglProgram","prepareUniformsGroup","onUniformsGroupsDispose","updateBufferData","bindingPointIndex","allocateBindingPointIndex","__size","bindBufferBase","__cache","hasUniformChanged","__offset","__data","cachedObject","chunkSize","chunkOffset","getUniformSize","storage","remainingSizeInChunk","boundary","createCanvasElement","display","WebGLRenderer","isWebGLRenderer","_context","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","_alpha","currentRenderList","currentRenderState","renderListStack","renderStateStack","domElement","sortObjects","toneMappingExposure","gammaFactor","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","onContextCreationError","isWebGL1Renderer","shift","initGLContext","preventDefault","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","statusMessage","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReferences","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","method","setTransparentSort","bits","onXRSessionStart","onXRSessionEnd","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","prepare","getProgram","material2","projectObject","isLOD","intersectsSprite","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","onAfterRender","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","onBuild","needsLights","materialNeedsLights","progUniforms","uniformsList","seqWithValue","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","setOptional","boneTexture","computeBoneTexture","boneTextureSize","isMeshGouraudMaterial","markUniformsLightsNeedsUpdate","upload","self","setFromProjectionMatrix","camera2","defaultFramebuffer","__useDefaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","framebufferBound","layer","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","readPixels","copyFramebufferToTexture","level","levelScale","copyTexSubImage2D","copyTextureToTexture","srcTexture","dstTexture","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","compressedTexSubImage3D","resetState","__THREE_DEVTOOLS__","CustomEvent","detail","WebGL1Renderer","Scene","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distSq","distanceSqToSegment","_start","_end","LineSegments","CylinderGeometry","radiusTop","radiusBottom","radialSegments","openEnded","thetaStart","thetaLength","indexArray","generateTorso","slope","indexRow","sinTheta","cosTheta","generateCap","centerIndexStart","centerIndexEnd","arraySlice","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","_cachedIndex","valueSize","settings","DefaultSettings_","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","copySampleValue_","t1global","mid","intervalChanged_","interpolate_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","times","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","track","trackType","json","getInterpolation","ValueTypeName","getValueSize","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","createInterpolant","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","writeIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","slerpFlat","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","Light","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","_lightPositionWorld","_lookTarget","PointLightShadow","_cubeDirections","_cubeUps","PointLight","power","AmbientLight","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","binding","getValue","bindings","unbind","rootNode","node","findNode","nodeName","_getValue_unbound","_setValue_unbound","root","isAnimationObjectGroup","trackName","matches","objectName","objectIndex","propertyName","propertyIndex","lastDot","lastIndexOf","substring","bone","getBoneByName","searchNodeSubtree","childNode","subTreeNode","targetObject","resolvedProperty","dest","targetArray","sourceArray","_getValue_unavailable","_setValue_unavailable","bones","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","GridHelper","divisions","revision","window","__THREE__","upper_cone_height","upper_cone_mouth_diameter","cylinder_height","cylinder_diameter","lower_cone_height","lower_cone_mouth_diameter","leg_height","lower_cone_position","cyclinder_position","upper_cone_position","wireframe_material","box_geometry","all_legs","leg","lower_cone_geometry","lower_cone","setY","lower_cone_wireframe","cylinder_geometry","cylinder","cylinder_wireframe","upper_cone_geometry","upper_cone","upper_cone_wireframe","pointLight","ambientLight","gridHelper","animate","updateLegs","updateSiloPart","part","part_wireframe","updateSilo","querySelector","for","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","registration_store","dashboard_store","button_state_class","success","show_alert","showAlert","register","changeShowModal","show_modal","confirm","post","tryPost","recommended_cylinder_diameter","silo_name","toFixed","sensor_height","sensor_install_radius","food","getConeHeight","diagonal","mouth_diameter","hypotenuse_square","base_squared","getValueOrZero","upper_cone_diagonal","cylinder_circumference","lower_cone_diagonal","vertical_distance_mouth_to_sensor","horizontal_distance_mouth_to_sensor","Loading","SiloCanvas","onSubmit","ModalAlert","onConfirm","onChangeShowModal","ResponseAlert","onChangeShow","METHOD_NAME","argument","DESCRIPTORS","isForced","redefine","hasOwn","inheritIfRequired","isPrototypeOf","isSymbol","toPrimitive","getOwnPropertyNames","getOwnPropertyDescriptor","thisNumberValue","NUMBER","NativeNumber","NumberPrototype","charCodeAt","toNumeric","primValue","toNumber","first","third","radix","maxCode","digits","NaN","NumberWrapper","dummy","regexp","error1","error2","mergeSort","middle","insertionSort","llength","rlength","lindex","rindex","$repeat","stringSlice","un$ToFixed","acc","divide","dataToString","fractionDigits","number","fractDigits","$includes","el","$map","UA"],"mappings":"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","file":"js/chunk-8b817564.d774392c.js","sourcesContent":["var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SiloCanvas.vue?vue&type=style&index=0&id=05017b7c&scoped=true&lang=css\"","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./RegisterSilo.vue?vue&type=style&index=0&id=ebd86a9e&scoped=true&lang=css\"","\n \n\n\n\n","import { render } from \"./Loading.vue?vue&type=template&id=00324ed9&scoped=true\"\nconst script = {}\n\nimport \"./Loading.vue?vue&type=style&index=0&id=00324ed9&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/support-platform/support-platform/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-00324ed9\"]])\n\nexport default __exports__","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7bf9aec2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"modal-wrapper\"\n}\nconst _hoisted_2 = { class: \"modal\" }\nconst _hoisted_3 = { class: \"header\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h1\", { style: {\"transform\":\"rotate(45deg)\"} }, \"+\", -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = { class: \"body\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h1\", null, \"CANCEL\", -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\n\nimport { PropType, ComputedRef, computed } from \"vue\";\nimport { ModalColorsType } from '@/types/modal_colors';\n\nexport default /*#__PURE__*/_defineComponent({\n props: {\n show: { type: Boolean, required: true },\n title: { type: String, required: true },\n message: { type: String, required: true },\n colors: { type: [] as PropType, required: true },\n},\n emits: [\"changeShowModal\", \"confirm\"],\n setup(__props, { emit }) {\n\nconst props = __props\n\n_useCssVars(_ctx => ({\n \"212fa6dc\": (_unref(base_color)),\n \"0bd5bd73\": (_unref(light_color)),\n \"4172807e\": (_unref(dark_color))\n}))\n\n\n\n// Props\n\n\n// Methods\nconst emitShow = (show: boolean) => emit(\"changeShowModal\", show);\nconst emitConfirm = () => emit(\"confirm\");\n\nconst light_color: ComputedRef = computed(() => props.colors[1])\nconst base_color: ComputedRef = computed(() => props.colors[0])\nconst dark_color: ComputedRef = computed(() => props.colors[2])\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Transition, { name: \"bounce\" }, {\n default: _withCtx(() => [\n (__props.show)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"header\", _hoisted_3, [\n _createElementVNode(\"h3\", null, _toDisplayString(props.title), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emitShow(false)))\n }, _hoisted_5)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"p\", null, _toDisplayString(props.message), 1)\n ]),\n _createElementVNode(\"footer\", null, [\n _createElementVNode(\"button\", {\n id: \"cancel-button\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emitShow(false)))\n }, _hoisted_8),\n _createElementVNode(\"button\", {\n id: \"confirm-button\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (emitConfirm()))\n }, [\n _createElementVNode(\"h1\", null, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }))\n}\n}\n\n})","import script from \"./ModalAlert.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ModalAlert.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ModalAlert.vue?vue&type=style&index=0&id=7bf9aec2&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/support-platform/support-platform/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7bf9aec2\"]])\n\nexport default __exports__","export const warning_colors = [\"var(--warning-yellow)\", \"var(--warning-light-yellow)\", \"var(--warning-dark-yellow)\"]\nexport const error_colors = [\"var(--error-light-red)\", \"var(--error-lighter-red)\", \"var(--error-dark-red)\"]\nexport const neutral_colors = [\"var(--light-grey)\", \"var(--dark-grey)\", \"var(--light-black)\"]\nexport const good_colors = [\"var(--light-green-pecsmart)\", \"var(--btn-green)\", \"var(--dark-green-pecsmart)\"]\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Loading.vue?vue&type=style&index=0&id=00324ed9&scoped=true&lang=css\"","import { defineStore } from \"pinia\";\nimport { useMainStore } from '@/store/main';\nimport { API_URL } from \"@/utils/urls\";\nimport { FoodType } from \"@/types/food\";\n\nconst MAIN_STORE = useMainStore()\n\n\nexport const useRegistrationStore = defineStore(\"registrationStore\", {\n state: () => ({\n foods: null as FoodType[] | null,\n }),\n actions: {\n async getSiloProfile(pk: any): Promise {\n const siloProfile = await MAIN_STORE.getFromAPI(`${API_URL}/silo_profiles/${pk}`)\n return siloProfile\n },\n async getSiloAcquisition(pk: any): Promise {\n const siloProfile = await MAIN_STORE.getFromAPI(`${API_URL}/smartfeed_v0_acquisitions/${pk}`)\n return siloProfile\n },\n async fetchFoods(): Promise {\n let data = await MAIN_STORE.getFromAPI(`${API_URL}/foods/`);\n this.foods = data.results\n while (data?.next != null) {\n data = await MAIN_STORE.getFromAPI(data.next);\n if (this.foods == null) return;\n this.foods.concat(data.results)\n }\n },\n async registerUser(data: any): Promise {\n const user_posted = await MAIN_STORE.postOnAPI(`${API_URL}/users/create_user/`, data)\n \n const employee = {\n user: user_posted.pk,\n phone_number: \"\",\n company: parseInt(data.company),\n role: data.role,\n associated_farm: data.associated_farm === \"null\" ? null : parseInt(data.associated_farm)\n }\n await MAIN_STORE.postOnAPI(`${API_URL}/employees/`, employee)\n },\n async registerCompany(data: any): Promise {\n const company = {name: data.name, farms: [], foods: []}\n const company_posted = await MAIN_STORE.postOnAPI(`${API_URL}/companies/`, company)\n\n const reference_weight_curve = {\n name: `Curva referência ${company_posted.name} (fake)`,\n company: company_posted.pk,\n curve: {},\n }\n await MAIN_STORE.postOnAPI(`${API_URL}/reference_weight_curves/`, reference_weight_curve)\n },\n async registerSilo(silo_data: any): Promise {\n await MAIN_STORE.postOnAPI(`${API_URL}/silos/`, silo_data)\n },\n },\n getters: {\n getFoods: state => state.foods,\n },\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ModalAlert.vue?vue&type=style&index=0&id=7bf9aec2&scoped=true&lang=css\"","import { defineStore } from \"pinia\";\nimport { useMainStore } from '@/store/main';\nimport { CompanyType } from \"@/types/company\";\nimport { FarmType } from \"@/types/farm\";\nimport { BarnType } from \"@/types/barn\";\nimport { SensorType } from \"@/types/sensor\";\nimport { BarnVisibilityType } from \"@/types/barn_visibility\";\nimport { API_URL } from \"@/utils/urls\";\n\nconst MAIN_STORE = useMainStore()\n\n\nexport const useDashboardStore = defineStore(\"dashboardStore\", {\n state: () => ({\n companies: [] as CompanyType[],\n visibility: 'hide_disabled' as BarnVisibilityType,\n }),\n actions: {\n async setHomeInfo(): Promise {\n try {\n this.companies = await MAIN_STORE.getFromAPI(`${API_URL}/companies/support_platform_report`)\n }\n catch(error) {throw Error(`${error}`.replace(\"Error: \", \"\"))}\n },\n setVisibility(value: BarnVisibilityType): void {\n this.visibility = value\n },\n },\n getters: {\n getVisibility: state => state.visibility,\n getCompanies: state => state.companies,\n getFarms: state => {\n const farms: FarmType[] = []\n state.companies.forEach((company: CompanyType) => {farms.push(...company.farms)})\n return farms.sort((a, b) => a.name.localeCompare(b.name))\n },\n getBarns() {\n const barns: BarnType[] = []\n this.getFarms.forEach((farm: FarmType) => {barns.push(...farm.barns)})\n return barns\n },\n getAllSensors() {\n const sensors: SensorType[] = []\n this.getBarns.forEach((barn: BarnType) => {sensors.push(...barn.sensors)})\n return sensors\n },\n getActiveSensors() {\n const sensors: SensorType[] = []\n this.getBarns.forEach((barn: BarnType) => {\n if (this.getVisibility === 'hide_disabled') {\n if (barn.is_last_batch_active) {\n sensors.push(...barn.sensors)\n }\n }\n else {\n sensors.push(...barn.sensors)\n }\n })\n return sensors\n },\n getSensorsInstalled(): SensorType[] {\n return this.getActiveSensors.filter((sensor: SensorType) => sensor.status === 'installed')\n },\n getSmartCamSensors(): SensorType[] {\n return this.getSensorsInstalled.filter((item: SensorType) => item.type === 'smartcam')\n },\n getSmartMicSensors(): SensorType[] { \n return this.getSensorsInstalled.filter((item: SensorType) => {\n return item.type.includes('smartmic')\n })\n },\n getSmartFeedSensors(): SensorType[] {\n return this.getSensorsInstalled.filter((item: SensorType) => item.type === 'smartfeed')\n },\n getActiveSmartFeedSensors(): SensorType[] {\n const sensors: SensorType[] = []\n this.getBarns.forEach((barn: BarnType) => {sensors.push(...barn.sensors)})\n return sensors.filter((sensor: SensorType) => sensor.type === 'smartfeed' && sensor.status !== 'disabled')\n },\n getFarmByBarn() {\n return (barn_pk: number | undefined): FarmType | null | undefined => {\n if (barn_pk === undefined) return null;\n return this.getFarms.find((farm: FarmType) => farm.barns.map((barn: BarnType) => barn.pk).includes(barn_pk) ? farm : null)\n }\n },\n getBarnByPK() {\n return (barn_pk: number | undefined): BarnType | null => {\n const barn = this.getBarns.find((barn: BarnType) => barn_pk === barn.pk)\n if (barn_pk == null || barn == null) return null\n return barn\n }\n },\n },\n});\n","/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '145';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022; // @deprecated since r137\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\n// JavaScript RGB-to-RGB transforms, defined as\n// FN[InputColorSpace][OutputColorSpace] callback functions.\nconst FN = {\n\t[ SRGBColorSpace ]: { [ LinearSRGBColorSpace ]: SRGBToLinear },\n\t[ LinearSRGBColorSpace ]: { [ SRGBColorSpace ]: LinearToSRGB },\n};\n\nconst ColorManagement = {\n\n\tlegacyMode: true,\n\n\tget workingColorSpace() {\n\n\t\treturn LinearSRGBColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .workingColorSpace is readonly.' );\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.legacyMode || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tif ( FN[ sourceColorSpace ] && FN[ sourceColorSpace ][ targetColorSpace ] !== undefined ) {\n\n\t\t\tconst fn = FN[ sourceColorSpace ][ targetColorSpace ];\n\n\t\t\tcolor.r = fn( color.r );\n\t\t\tcolor.g = fn( color.g );\n\t\t\tcolor.b = fn( color.b );\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tthrow new Error( 'Unsupported color space conversion.' );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\n};\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _rgb = { r: 0, g: 0, b: 0 };\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction toComponents( source, target ) {\n\n\ttarget.r = source.r;\n\ttarget.g = source.g;\n\ttarget.b = source.b;\n\n\treturn target;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseFloat( color[ 2 ] ) / 100;\n\t\t\t\t\t\tconst l = parseFloat( color[ 3 ] ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l, colorSpace );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\treturn clamp( _rgb.r * 255, 0, 255 ) << 16 ^ clamp( _rgb.g * 255, 0, 255 ) << 8 ^ clamp( _rgb.b * 255, 0, 255 ) << 0;\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tconst r = _rgb.r, g = _rgb.g, b = _rgb.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\ttarget.r = _rgb.r;\n\t\ttarget.g = _rgb.g;\n\t\ttarget.b = _rgb.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ _rgb.r } ${ _rgb.g } ${ _rgb.b })`;\n\n\t\t}\n\n\t\treturn `rgb(${( _rgb.r * 255 ) | 0},${( _rgb.g * 255 ) | 0},${( _rgb.b * 255 ) | 0})`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( precise && geometry.attributes != undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t_vector$b.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$3 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// handle empty sphere cases\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t} else if ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t if ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t _toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );\n\n\n\t\t} else {\n\n\t\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\t}\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n\t// @deprecated since r138, 02cf0df1cb4575d5842fef9c85bb5a89fe020d53\n\n\ttoVector3() {\n\n\t\tconsole.error( 'THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead' );\n\n\t}\n\n}\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DefaultMatrixWorldAutoUpdate; // checked by the renderer\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\nObject3D.DefaultMatrixWorldAutoUpdate = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n\t// @deprecated\n\n\tcopyColorsArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyColorsArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector2sArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector2sArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector3sArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector3sArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector4sArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector4sArray() was removed in r144.' );\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t// @deprecated since r144\n\n\tmerge() {\n\n\t\tconsole.error( 'THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead.' );\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv2 = geometry.attributes.uv2;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst currentToneMapping = renderer.toneMapping;\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.toneMapping = currentToneMapping;\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\n#ifdef USE_IRIDESCENCE\\n\\tvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\t return vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat R21 = R12;\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = dFdx( surf_pos.xyz );\\n\\t\\tvec3 vSigmaY = dFdy( surf_pos.xyz );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_v0 0.339\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_v1 0.276\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_v4 0.046\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_v5 0.016\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_v6 0.0038\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\\n\\t#else\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if defined( USE_SHADOWMAP ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_COORDS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tgl_FragColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\\t#endif\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include