{"version":3,"sources":["../node_modules/react/index.js","../node_modules/three/build/three.module.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/prop-types/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/redux/es/redux.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/EventEmitter/src/index.js","../../src/utils/errors.ts","../../src/utils/common.ts","../../src/types/types-internal.ts","../../src/utils/plugins.ts","../../src/core/scope.ts","../../src/core/finalize.ts","../../src/core/proxy.ts","../../src/core/immerClass.ts","../../src/core/current.ts","../../src/plugins/es5.ts","../../src/immer.ts","../../src/utils/env.ts","../node_modules/reselect/es/index.js","../node_modules/redux-thunk/es/index.js","../../src/devtoolsExtension.ts","../../src/isPlainObject.ts","../../src/utils.ts","../../src/getDefaultMiddleware.ts","../../src/configureStore.ts","../../src/createAction.ts","../../src/mapBuilders.ts","../../src/createSlice.ts","../../src/createReducer.ts","../../node_modules/babel-plugin-transform-async-to-promises/helpers.js","../../src/index.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-dom/index.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/js-base64/base64.mjs","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/react-is/index.js","../../node_modules/tslib/tslib.es6.js","../../node_modules/css-line-break/src/Util.ts","../../src/css/layout/bounds.ts","../../src/css/syntax/tokenizer.ts","../../node_modules/css-line-break/src/Trie.ts","../../node_modules/css-line-break/src/LineBreak.ts","../../node_modules/css-line-break/src/linebreak-trie.ts","../../src/css/syntax/parser.ts","../../src/css/types/length.ts","../../src/css/types/length-percentage.ts","../../src/css/types/angle.ts","../../src/css/types/color.ts","../../src/css/IPropertyDescriptor.ts","../../src/css/property-descriptors/background-clip.ts","../../src/css/types/image.ts","../../src/css/property-descriptors/background-color.ts","../../src/css/types/functions/gradient.ts","../../src/css/types/functions/-prefix-linear-gradient.ts","../../src/core/features.ts","../../src/core/logger.ts","../../src/core/cache-storage.ts","../../src/css/types/functions/-prefix-radial-gradient.ts","../../src/css/types/functions/radial-gradient.ts","../../src/css/property-descriptors/background-repeat.ts","../../src/css/types/functions/linear-gradient.ts","../../src/css/types/functions/-webkit-gradient.ts","../../src/css/property-descriptors/background-image.ts","../../src/css/property-descriptors/background-origin.ts","../../src/css/property-descriptors/background-position.ts","../../src/css/property-descriptors/background-size.ts","../../src/css/property-descriptors/border-style.ts","../../src/css/property-descriptors/border-color.ts","../../src/css/property-descriptors/border-radius.ts","../../src/css/property-descriptors/float.ts","../../src/css/property-descriptors/border-width.ts","../../src/css/property-descriptors/color.ts","../../src/css/property-descriptors/display.ts","../../src/css/property-descriptors/line-break.ts","../../src/css/property-descriptors/letter-spacing.ts","../../src/css/property-descriptors/list-style-position.ts","../../src/css/property-descriptors/line-height.ts","../../src/css/property-descriptors/list-style-image.ts","../../src/css/property-descriptors/list-style-type.ts","../../src/css/property-descriptors/overflow.ts","../../src/css/property-descriptors/margin.ts","../../src/css/property-descriptors/overflow-wrap.ts","../../src/css/property-descriptors/text-align.ts","../../src/css/property-descriptors/padding.ts","../../src/css/property-descriptors/position.ts","../../src/css/property-descriptors/text-transform.ts","../../src/css/property-descriptors/text-shadow.ts","../../src/css/property-descriptors/visibility.ts","../../src/css/property-descriptors/transform.ts","../../src/css/property-descriptors/transform-origin.ts","../../src/css/property-descriptors/word-break.ts","../../src/css/property-descriptors/font-style.ts","../../src/css/property-descriptors/z-index.ts","../../src/css/property-descriptors/opacity.ts","../../src/css/property-descriptors/text-decoration-color.ts","../../src/css/property-descriptors/text-decoration-line.ts","../../src/css/property-descriptors/font-family.ts","../../src/css/property-descriptors/font-size.ts","../../src/css/property-descriptors/font-weight.ts","../../src/css/property-descriptors/font-variant.ts","../../src/dom/document-cloner.ts","../../src/core/bitwise.ts","../../src/css/property-descriptors/content.ts","../../src/css/property-descriptors/counter-increment.ts","../../src/css/property-descriptors/counter-reset.ts","../../src/css/property-descriptors/quotes.ts","../../src/css/property-descriptors/box-shadow.ts","../../src/css/index.ts","../../src/dom/element-container.ts","../../src/css/layout/text.ts","../../src/dom/text-container.ts","../../src/dom/replaced-elements/image-element-container.ts","../../src/dom/replaced-elements/canvas-element-container.ts","../../src/dom/replaced-elements/svg-element-container.ts","../../src/dom/elements/li-element-container.ts","../../src/dom/elements/ol-element-container.ts","../../src/dom/replaced-elements/input-element-container.ts","../../src/dom/elements/select-element-container.ts","../../src/dom/elements/textarea-element-container.ts","../../src/dom/replaced-elements/iframe-element-container.ts","../../src/dom/node-parser.ts","../../src/css/types/functions/counter.ts","../../src/render/path.ts","../../src/render/bound-curves.ts","../../src/render/vector.ts","../../src/render/bezier-curve.ts","../../src/render/effects.ts","../../src/render/stacking-context.ts","../../src/render/border.ts","../../src/render/box-sizing.ts","../../src/render/background.ts","../../src/render/font-metrics.ts","../../src/core/util.ts","../../src/render/canvas/canvas-renderer.ts","../../src/render/canvas/foreignobject-renderer.ts","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/symbol-observable/es/index.js","../../src/constants.js","../../src/utils.js","../../src/server.js","../../src/Provider.js","../../src/client.js","../../src/Dispatcher.js","../../src/index.js","../node_modules/invariant/browser.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/webpack/buildin/global.js","../node_modules/object-assign/index.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/react-fast-compare/index.js","../node_modules/shallowequal/index.js","../node_modules/stats.js/build/stats.min.js","../node_modules/three/examples/jsm/loaders/DRACOLoader.js","../node_modules/three/examples/jsm/renderers/Projector.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/jspdf/dist/jspdf.es.min.js","../node_modules/three/examples/jsm/loaders/RGBELoader.js","../node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/gsap/gsap-core.js","../node_modules/react-i18next/dist/es/withTranslation.js"],"names":["module","exports","require","undefined","Number","EPSILON","Math","pow","isInteger","value","isFinite","floor","sign","x","Function","prototype","Object","defineProperty","get","this","toString","match","assign","target","TypeError","output","index","arguments","length","source","nextKey","hasOwnProperty","call","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","FrontFaceDirectionCW","FrontFaceDirectionCCW","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","SmoothShading","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","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipMapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","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","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","ZeroStencilOp","KeepStencilOp","ReplaceStencilOp","IncrementStencilOp","DecrementStencilOp","IncrementWrapStencilOp","DecrementWrapStencilOp","InvertStencilOp","NeverStencilFunc","LessStencilFunc","EqualStencilFunc","LessEqualStencilFunc","GreaterStencilFunc","NotEqualStencilFunc","GreaterEqualStencilFunc","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","StreamDrawUsage","StaticReadUsage","DynamicReadUsage","StreamReadUsage","StaticCopyUsage","DynamicCopyUsage","StreamCopyUsage","EventDispatcher","addEventListener","type","listener","_listeners","listeners","indexOf","push","hasEventListener","removeEventListener","listenerArray","splice","dispatchEvent","event","array","slice","i","l","_lut","_canvas","MathUtils","DEG2RAD","PI","RAD2DEG","generateUUID","d0","random","d1","d2","d3","toUpperCase","clamp","min","max","euclideanModulo","n","m","mapLinear","a1","a2","b1","b2","lerp","y","t","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","ceil","log","LN2","floorPowerOfTwo","setQuaternionFromProperEuler","q","a","b","c","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","set","console","warn","Vector2","Matrix3","elements","error","defineProperties","isVector2","setScalar","scalar","setX","setY","setComponent","Error","getComponent","clone","constructor","copy","v","add","w","addVectors","addScalar","s","addScaledVector","sub","subVectors","subScalar","multiply","multiplyScalar","divide","divideScalar","applyMatrix3","e","clampScalar","minVal","maxVal","clampLength","round","roundToZero","negate","dot","cross","lengthSq","sqrt","manhattanLength","abs","normalize","angle","atan2","distanceTo","distanceToSquared","dx","dy","manhattanDistanceTo","setLength","alpha","lerpVectors","v1","v2","equals","fromArray","offset","toArray","fromBufferAttribute","attribute","getX","getY","rotateAround","center","isMatrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","identity","me","extractBasis","xAxis","yAxis","zAxis","setFromMatrix3Column","setFromMatrix4","multiplyMatrices","premultiply","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","determinant","d","f","g","h","getInverse","matrix","throwOnDegenerate","t11","t12","t13","det","detInv","transpose","tmp","getNormalMatrix","matrix4","transposeIntoArray","r","setUvTransform","tx","ty","sx","sy","rotation","cx","cy","scale","rotate","theta","translate","ImageUtils","getDataURL","image","test","src","HTMLCanvasElement","canvas","document","createElementNS","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","uuid","name","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","Vector4","z","WebGLRenderTarget","options","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","Quaternion","_x","_y","_z","_w","create","isTexture","updateMatrix","toJSON","meta","isRootObject","textures","metadata","generator","wrap","images","url","Array","isArray","dispose","transformUv","uv","isVector4","setZ","setW","applyMatrix4","setAxisAngleFromQuaternion","acos","setAxisAngleFromRotationMatrix","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getZ","getW","isWebGLRenderTarget","setSize","isWebGLMultisampleRenderTarget","slerp","qa","qb","qm","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","multiplyQuaternionsFlat","_onChangeCallback","isQuaternion","quaternion","setFromEuler","euler","update","isEuler","c1","c3","s1","s3","setFromAxisAngle","axis","halfAngle","setFromRotationMatrix","trace","setFromUnitVectors","vFrom","vTo","angleTo","rotateTowards","step","inverse","conjugate","p","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","_onChange","callback","_vector","Vector3","_quaternion","isVector3","multiplyVectors","applyEuler","applyQuaternion","applyAxisAngle","applyNormalMatrix","qx","qy","qz","qw","ix","iy","iz","iw","project","camera","matrixWorldInverse","projectionMatrix","unproject","projectionMatrixInverse","matrixWorld","transformDirection","crossVectors","ax","ay","az","bx","by","bz","projectOnVector","denominator","projectOnPlane","planeNormal","reflect","normal","dz","setFromSpherical","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindrical","setFromCylindricalCoords","setFromMatrixPosition","setFromMatrixScale","setFromMatrixColumn","sz","_v1","_m1","Matrix4","_zero","_one","isMatrix4","n14","n24","n34","n41","n42","n43","n44","copyPosition","makeBasis","extractRotation","scaleX","scaleY","scaleZ","makeRotationFromEuler","af","bf","ce","cf","de","df","ac","ad","bc","bd","makeRotationFromQuaternion","compose","lookAt","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","setPosition","t14","getMaxScaleOnAxis","scaleXSq","scaleYSq","scaleZSq","makeTranslation","makeRotationX","makeRotationY","makeRotationZ","makeRotationAxis","makeScale","makeShear","position","x2","y2","z2","wx","wy","wz","decompose","invSX","invSY","invSZ","makePerspective","left","right","top","bottom","near","far","makeOrthographic","_matrix","_quaternion$1","Euler","DefaultOrder","_order","Layers","mask","RotationOrders","asin","setFromQuaternion","setFromVector3","reorder","newOrder","toVector3","optionalResult","channel","enable","enableAll","toggle","disable","disableAll","layers","_object3DId","_v1$1","_q1","_m1$1","_target","_position","_scale","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","parent","children","DefaultUp","configurable","enumerable","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","Scene","background","environment","fog","overrideMaterial","autoUpdate","__THREE_DEVTOOLS__","CustomEvent","detail","isObject3D","onBeforeRender","onAfterRender","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","distance","translateX","translateY","translateZ","localToWorld","vector","worldToLocal","updateWorldMatrix","isCamera","isLight","object","remove","attach","getObjectById","id","getObjectByProperty","getObjectByName","getWorldPosition","updateMatrixWorld","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverse","traverseVisible","traverseAncestors","force","updateParents","updateChildren","geometries","materials","shapes","serialize","library","element","JSON","stringify","isInstancedMesh","count","instanceMatrix","isMesh","isLine","isPoints","geometry","parameters","shape","material","uuids","extractFromCache","cache","values","key","data","recursive","parse","child","isScene","_points","_vector$1","_box","Box3","_v0","_v1$2","_v2","_f0","_f1","_f2","_center","_extents","_triangleNormal","_testAxis","Infinity","satForAxes","axes","v0","extents","j","p0","p1","p2","isBox3","setFromArray","minX","minY","minZ","maxX","maxY","maxZ","setFromBufferAttribute","setFromPoints","points","makeEmpty","il","expandByPoint","setFromCenterAndSize","size","halfSize","setFromObject","expandByObject","box","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","boundingBox","computeBoundingBox","union","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","sphere","clampPoint","intersectsPlane","plane","constant","intersectsTriangle","triangle","distanceToPoint","getBoundingSphere","intersect","_box$1","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","getBoundingBox","_vector$2","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","origin","direction","ray","at","recast","closestPointToPoint","directionDistance","distanceSqToPoint","distanceSqToSegment","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","intersectSphere","tca","radius2","thc","t0","t1","distanceToPlane","intersectPlane","distToPoint","intersectBox","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectTriangle","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","_vector1","_vector2","_normalMatrix","Plane","isPlane","setComponents","setFromNormalAndCoplanarPoint","setFromCoplanarPoints","inverseNormalLength","distanceToSphere","projectPoint","intersectLine","line","delta","start","intersectsLine","startSign","endSign","end","coplanarPoint","optionalNormalMatrix","referencePoint","_v0$1","_v1$3","_v2$1","_v3","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","getNormal","targetLengthSq","getBarycoord","dot00","dot01","dot02","dot11","dot12","denom","invDenom","u","getUV","p3","uv1","uv2","uv3","isFrontFacing","setFromPointsAndIndices","i0","i1","i2","getArea","getMidpoint","getPlane","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","Color","setRGB","hue2rgb","SRGBToLinear","LinearToSRGB","Face3","color","materialIndex","vertexNormals","isColor","vertexColors","setHex","setStyle","hex","setHSL","style","handleAlpha","string","parseFloat","exec","components","parseInt","charAt","setColorName","copyGammaToLinear","gammaFactor","copyLinearToGamma","safeInverse","convertGammaToLinear","convertLinearToGamma","copySRGBToLinear","copyLinearToSRGB","convertSRGBToLinear","convertLinearToSRGB","getHex","getHexString","getHSL","hue","saturation","lightness","getStyle","offsetHSL","addColors","color1","color2","lerpHSL","normalized","NAMES","materialId","Material","blending","side","flatShading","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","alphaTest","premultipliedAlpha","toneMapped","MeshBasicMaterial","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","combine","reflectivity","refractionRatio","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","morphTargets","setValues","isMaterial","onBeforeCompile","customProgramCacheKey","newValue","currentValue","isRoot","roughness","metalness","sheen","emissive","emissiveIntensity","specular","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","matcap","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","envMapIntensity","gradientMap","sizeAttenuation","linewidth","dashSize","gapSize","morphNormals","srcPlanes","dstPlanes","isMeshBasicMaterial","_vector$3","_vector2$1","BufferAttribute","itemSize","usage","updateRange","Int8BufferAttribute","Int8Array","Uint8BufferAttribute","Uint8Array","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Int16Array","Uint16BufferAttribute","Uint16Array","Int32BufferAttribute","Int32Array","Uint32BufferAttribute","Uint32Array","Float32BufferAttribute","Float32Array","Float64BufferAttribute","Float64Array","DirectGeometry","vertices","normals","colors","uvs","uvs2","groups","skinWeights","skinIndices","boundingSphere","verticesNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","uvsNeedUpdate","groupsNeedUpdate","arrayMax","isBufferAttribute","onUploadCallback","setUsage","copyAt","index1","index2","copyArray","copyColorsArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","setXY","setXYZ","setXYZW","onUpload","computeGroups","group","faces","face","fromGeometry","morphTargetsPosition","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargetsLength","morphTargetsNormal","morphNormalsLength","hasSkinIndices","hasSkinWeights","vertexUvs","morphTarget","morphNormal","_bufferGeometryId","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$4","BufferGeometry","attributes","morphAttributes","morphTargetsRelative","drawRange","isBufferGeometry","getIndex","setIndex","getAttribute","setAttribute","deleteAttribute","addGroup","clearGroups","setDrawRange","needsUpdate","tangent","computeBoundingSphere","positions","lineDistances","isGeometry","updateFromObject","direct","__directGeometry","elementsNeedUpdate","lineDistancesNeedUpdate","lineDistance","fromDirectGeometry","morphAttributesPosition","morphAttribute","isNaN","jl","computeFaceNormals","computeVertexNormals","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","vA","vB","vC","normalizeNormals","merge","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","indices","array2","geometry2","newAttribute","morphArray","keys","attributeData","hasMorphAttributes","attributeArray","_inverseMatrix","_ray","_sphere","_vA","_vB","_vC","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA","_uvB","_uvC","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","checkIntersection","raycaster","checkBufferGeometryIntersection","morphPosition","morphInfluences","morphTargetInfluences","influence","isSkinnedMesh","boneTransform","intersection","morphTargetDictionary","ml","String","intersects","groupMaterial","faceIndex","isMultiMaterial","fl","faceMaterial","fvA","fvB","fvC","uvs_f","_geometryId","_m1$3","_obj$1","_offset$1","Geometry","fromBufferGeometry","scope","addFace","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","faceVertexUvs2","uvsCopy","k","kl","mergeMesh","mesh","mergeVertices","verticesMap","unique","changes","faceIndicesToRemove","idx","diff","sortFacesByMaterialIndex","_id","sort","newUvs1","newUvs2","uvs1","vertex","normalsHash","colorsHash","uvsHash","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","srcVertexNormal","destVertexNormal","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","property","mergeUniforms","uniforms","merged","UniformsUtils","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","isShaderMaterial","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","offsetX","offsetY","clearViewOffset","skew","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","render","clear","stencil","WebGLCubeRenderTarget","dummy","DataTexture","fromEquirectangularTexture","shader","tEquirect","join","isDataTexture","_sphere$1","_vector$5","Frustum","p4","p5","planes","frustum","setFromProjectionMatrix","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","intersectsObject","intersectsSprite","sprite","negRadius","UniformsLib","common","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","maxMipLevel","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","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","requestAnimationFrame","stop","cancelAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","isInterleavedBufferAttribute","deleteBuffer","buffer","delete","bufferType","createBuffer","bindBuffer","bufferData","bytesPerElement","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","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","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_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","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","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_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","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshtoon_frag","meshtoon_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","toneMapping","unshift","WebGLBindingStates","maxVertexAttributes","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","bindVertexArrayObject","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","newAttributes","enabledAttributes","attributeDivisors","program","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","stride","vertexAttribIPointer","reset","resetDefaultState","setup","updateBuffers","programMap","stateMap","createVertexArray","createVertexArrayOES","getBindingState","cachedAttributes","geometryAttributes","cachedAttribute","geometryAttribute","saveCache","isInstancedBufferGeometry","programAttributes","getAttributes","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","info","mode","setMode","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","_bufferGeometry","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","workInfluences","objectInfluences","influences","MAX_SAFE_INTEGER","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","WebGLObjects","updateMap","CubeTexture","DataTexture2DArray","wrapR","DataTexture3D","physical","transparency","isDataTexture2DArray","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueT1","unit","uniform1i","safeSetTexture2D","setValueT2DArray1","setTexture2DArray","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueV1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getShaderErrors","status","getShaderParameter","getShaderInfoLog","trim","split","addLineNumbers","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","prefixVertex","prefixFragment","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","gammaFactorDefine","customExtensions","extensionDerivatives","envMapCubeUV","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filter","generateExtensions","customDefines","chunks","generateDefines","createProgram","isRawShaderMaterial","shaderName","instancing","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","uvsVertexOnly","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","lightMapEncoding","outputEncoding","depthPacking","isGLSL3ShaderMaterial","versionRegex","cachedUniforms","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","deleteShader","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getTextureEncodingFromMap","getParameters","shadows","nClipPlanes","nClipIntersection","isMeshStandardMaterial","bones","skeleton","nVertexUniforms","nVertexMatrices","allocateBones","shaderobject","getShaderObject","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","pop","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","defaultProgram","getNextRenderItem","renderItem","finish","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","onSceneDispose","list","cameras","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","pointShadow","vector3","matrix42","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","WebGLRenderState","lightsArray","shadowsArray","setupLights","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","has","isMeshDepthMaterial","isMeshDistanceMaterial","WebGLShadowMap","_renderer","_objects","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterials","_distanceMaterials","_materialCache","0","1","2","shadowMaterialVertical","SAMPLE_RATE","HALF_SAMPLE_RATE","shadow_pass","resolution","shadowMaterialHorizonal","HORIZONAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","mapPass","renderBufferDirect","getDepthMaterialVariant","useMorphing","useSkinning","useInstancing","getDistanceMaterialVariant","getDepthMaterial","result","getMaterialVariant","customMaterial","customDepthMaterial","customDistanceMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","depthMaterial","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","enabledCapabilities","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","apply","texImage3D","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","OffscreenCanvas","err","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","LOG2E","getInternalFormat","internalFormatName","glFormat","glType","filterFallback","onTextureDispose","textureProperties","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","deallocateRenderTarget","textureUnits","setTexture2D","slot","updateVideoTexture","__version","complete","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","convert","glInternalFormat","setTextureParameters","mipmap","mipmapImage","setTextureCubeDynamic","wrappingToGL","filterToGL","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","createFramebuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","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_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","Group","WebXRController","_targetRay","_grip","WebXRManager","framebufferScaleFactor","referenceSpace","referenceSpaceType","pose","controllers","inputSourcesMap","Map","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","inputSource","onSessionEnd","forEach","disconnect","setFramebuffer","animation","isPresenting","onRequestReferenceSpace","updateInputSources","inputSources","removed","added","getController","getTargetRaySpace","getControllerGrip","getGripSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","setSession","getContextAttributes","xrCompatible","makeXRCompatible","layerInit","antialias","baseLayer","XRWebGLLayer","updateRenderState","requestReferenceSpace","then","cameraLPos","cameraRPos","updateCamera","getCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","onAnimationFrameCallback","getViewerPose","views","cameraVRNeedsUpdate","transform","WebGLMaterials","refreshUniformsCommon","uvScaleMap","uv2ScaleMap","refreshUniformsStandard","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","isMeshLambertMaterial","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","domElement","sortObjects","toneMappingExposure","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","shift","message","initGLContext","preventDefault","onMaterialDispose","releaseMaterialProgramReference","deallocateMaterial","programInfo","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","method","setTransparentSort","bits","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","positionArray","normalArray","uvArray","colorArray","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","compiled","material2","initMaterial","projectObject","isGroup","isLOD","isImmediateRenderObject","renderObjects","isArrayCamera","camera2","renderObjectImmediate","materialProperties","lightsStateVersion","programCacheKey","programChange","numSupportedMorphTargets","numSupportedMorphNormals","needsLights","materialNeedsLights","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","isOrthographicCamera","boneTexture","boneMatrices","boneTextureSize","ltc_1","LTC_1","ltc_2","LTC_2","window","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","WebGL1Renderer","FogExp2","Fog","InterleavedBuffer","inputPose","gripPose","targetRay","grip","getPose","targetRaySpace","gripSpace","isInterleavedBuffer","arrayBuffers","_uuid","ib","_geometry","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA$1","_vB$1","_vC$1","_uvA$1","_uvB$1","_uvC$1","Sprite","transformVertex","vertexPosition","mvPosition","_v1$4","_v2$2","LOD","_currentLevel","levels","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","addLevel","getCurrentLevel","getObjectForDistance","bind","calculateInverses","normalizeSkinWeights","skinWeight","basePosition","skinIndex","weight","boneIndex","boneInverses","_offsetMatrix","_identityMatrix","Skeleton","Bone","bone","isBone","getBoneByName","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","linecap","linejoin","getMatrixAt","raycastTimes","instanceId","setMatrixAt","_start","_end","_inverseMatrix$1","_ray$1","_sphere$2","Line","computeLineDistances","threshold","params","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","nbVertices","_start$1","_end$1","LineSegments","LineLoop","_inverseMatrix$2","_ray$2","_sphere$3","_position$1","Points","testPoint","rayPointDistanceSq","intersectPoint","distanceToRay","VideoTexture","video","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","edge","edges","edge1","edge2","o","ol","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","EPS","pu","pv","sliceCount","PolyhedronGeometry","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","subdivide","applyRadius","centroid","uvA","uvB","uvC","azi","correctUVs","correctSeam","generateUVs","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","P","generateSegment","getPointAt","N","B","generateIndices","generateBufferData","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","readyState","HAVE_CURRENT_DATA","isCanvasTexture","Earcut","holeIndices","dim","invSize","hasHoles","outerLen","outerNode","linkedList","prev","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","last","sum","signedArea","insertNode","removeNode","again","area","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","px","py","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","Node","an","bp","ShapeUtils","contour","isClockWise","pts","triangulateShape","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","ExtrudeBufferGeometry","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","reverse","hl","ahole","concat","scalePt2","pt","vec","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","bs","vert","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","layer","buildLidFaces","buildSideFaces","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","text","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","radiusStep","segment","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","inverseSegments","base","n1","n2","ShapeGeometry","ShapeBufferGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","toJSON$1","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","freeze","__proto__","RawShaderMaterial","Materials","AnimationUtils","arraySlice","from","to","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","find","referenceValue","startIndex","interpolant","createInterpolant","evaluate","resultBuffer","numTimes","valueStart","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","parseKeyframeTrack","json","trackType","typeName","toLowerCase","getTrackTypeForValueTypeName","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","settings","DefaultSettings_","getSettings_","copySampleValue_","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","getInterpolation","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","factoryMethod","timeOffset","timeScale","startTime","endTime","nKeys","validate","valid","prevTime","currTime","optimize","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","jsonTracks","frameTime","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","parseAnimation","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","global","DefaultLoadingManager","Loader","manager","crossOrigin","resourcePath","requestHeader","load","loadAsync","Promise","resolve","reject","setCrossOrigin","setPath","setResourcePath","setRequestHeader","loading","FileLoader","AnimationLoader","CompressedTextureLoader","DataTextureLoader","ImageLoader","CubeTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","cached","setTimeout","request","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","header","XMLHttpRequest","open","callbacks","withCredentials","overrideMimeType","send","setResponseType","setWithCredentials","setMimeType","loaded","loadTexture","texDatas","mipmapCount","isCubemap","texData","onImageLoad","onImageError","substr","urls","isJPEG","search","getPoint","optionalTarget","getUtoTmapping","getPoints","divisions","getLength","lengths","getLengths","cacheArcLengths","current","updateArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","getTangent","pt1","pt2","getTangentAt","mat","MAX_VALUE","tz","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","CatmullRomCurve3","curveType","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","isCatmullRomCurve3","intPoint","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","CurvePath","curves","autoClose","Path","currentPoint","Shape","Light","HemisphereLight","LightShadow","_frameExtents","_viewportCount","_viewports","SpotLightShadow","SpotLight","power","PointLightShadow","_cubeDirections","_cubeUps","PointLight","OrthographicCamera","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","LightProbe","MaterialLoader","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","absarc","absellipse","ellipse","firstPoint","lastPoint","getPointsHoles","holesPts","_lightPositionWorld","_lookTarget","shadowMatrix","projScreenMatrix","lookTarget","lightPositionWorld","viewportIndex","isSpotLightShadow","scaleW","scaleH","isDirectionalLightShadow","isSphericalHarmonics3","zero","getAt","coeff","getIrradianceAt","addScaledSH","getBasisAt","shBasis","getTexture","shading","setTextures","LoaderUtils","decodeText","TextDecoder","decode","fromCharCode","escape","extractUrlBase","lastIndexOf","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","arrayBuffer","getArrayBuffer","TYPED_ARRAYS","typedArray","bufferAttribute","drawcalls","offsets","ObjectLoader","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseAnimations","geometryShapes","bufferGeometryLoader","details","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","Font","createPath","char","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","familyName","FontLoader","isImageBitmapLoader","setOptions","res","blob","imageBitmap","catch","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","paths","chars","line_height","yMax","yMin","underlineThickness","ret","createPaths","substring","AudioContext","webkitAudioContext","AudioLoader","HemisphereLightProbe","sky","ground","AmbientLightProbe","bufferCopy","decodeAudioData","audioBuffer","isHemisphereLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","eyeSep","_cache","Clock","autoStart","oldTime","elapsedTime","running","xmin","xmax","eyeSepHalf","eyeSepOnProjection","ymax","performance","Date","now","getElapsedTime","getDelta","newTime","_position$2","_quaternion$3","_scale$1","_orientation","AudioListener","gain","createGain","connect","destination","timeDelta","_clock","Audio","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","filters","removeFilter","getFilter","setFilter","getMasterVolume","setMasterVolume","setTargetAtTime","currentTime","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","getOutput","setNodeSource","audioNode","setMediaElementSource","mediaElement","createMediaElementSource","setMediaStreamSource","mediaStream","createMediaStreamSource","setBuffer","play","delay","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","pause","getFilters","setFilters","getDetune","getPlaybackRate","getLoop","setLoop","setLoopStart","setLoopEnd","getVolume","setVolume","_position$3","_quaternion$4","_scale$2","_orientation$1","PositionalAudio","panner","createPanner","panningModel","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","setDirectionalCone","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","getFrequencyData","getByteFrequencyData","getAverageFrequency","accumulate","accuIndex","currentWeight","mix","accumulateAdditive","weightAdditive","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","endIndex","targetIndex","workOffset","_reservedRe","RegExp","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","node","findNode","nodeName","AnimationObjectGroup","nCachedObjects_","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","AnimationMixer","root","_root","_initMemoryManager","_accuIndex","Uniform","InstancedInterleavedBuffer","Raycaster","PointCloud","ascSort","intersectObject","Spherical","Cylindrical","firstValidIndex","bindings","unbind","isAnimationObjectGroup","sanitizeNodeName","matches","results","objectName","objectIndex","propertyIndex","lastDot","subTreeNode","searchNodeSubtree","childNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","resolvedProperty","SetterByBindingTypeAndVersioning","targetObject","dest","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","_activateAction","_deactivateAction","stopFading","stopWarping","isRunning","_isActiveAction","isScheduled","startAt","setEffectiveWeight","getEffectiveWeight","fadeIn","_scheduleFading","fadeOut","crossFadeFrom","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","crossFadeTo","fadeInAction","weightInterpolant","_takeBackControlInterpolant","setEffectiveTimeScale","getEffectiveTimeScale","setDuration","syncWith","action","halt","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","getMixer","getClip","getRoot","_update","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","setTime","timeInSeconds","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","setFromCamera","coords","intersectObjects","other","makeSafe","setFromCartesianCoords","_vector$7","Box2","_startP","_startEnd","Line3","ImmediateRenderObject","distanceSq","closestPointToPointParameter","clampToLine","startEnd2","_vector$8","SpotLightHelper","cone","coneLength","coneWidth","_vector$9","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","boneList","PointLightHelper","sphereSize","isSkeletonHelper","_vector$a","_color1","_color2","HemisphereLightHelper","GridHelper","PolarGridHelper","radials","circles","_v1$5","_v2$3","_v3$1","DirectionalLightHelper","lightPlane","targetLine","_vector$b","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_box$3","BoxHelper","Box3Helper","PlaneHelper","_lineGeometry","_coneGeometry","_axis","ArrowHelper","headLength","headWidth","setDirection","AxesHelper","setColor","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","LOD_MAX","ENCODINGS","_flatCamera","_lodPlanes","_sizeLods","_sigmas","lod","sizeLod","sigma","texelSize","positionSize","uvSize","faceIndexSize","coordinates","fill","_createPlanes","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_pingPongRenderTarget","_blurMaterial","weights","poleAxis","_getBlurShader","_equirectShader","_cubemapShader","_compileMaterial","_isLDR","_createRenderTarget","cubeUVRenderTarget","_setViewport","_getEquirectShader","_getCubemapShader","Face4","fromScene","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","fromEquirectangular","equirectangular","_fromTexture","fromCubemap","cubemap","compileCubemapShader","compileEquirectangularShader","outputTarget","_textureToCubeUV","tmpMesh","cubeCamera","upSign","forwardSign","maxComponent","fExp","log2","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","exp","outputSize","LineStrip","LinePieces","NoColors","FaceColors","VertexColors","MeshFaceMaterial","MultiMaterial","Particle","ParticleSystem","PointCloudMaterial","ParticleBasicMaterial","ParticleSystemMaterial","Vertex","DynamicBufferAttribute","Int8Attribute","Uint8Attribute","Uint8ClampedAttribute","Int16Attribute","Uint16Attribute","Int32Attribute","Uint32Attribute","Float32Attribute","Float64Attribute","ClosedSplineCurve3","SplineCurve3","Spline","AxisHelper","BoundingBoxHelper","EdgesHelper","WireframeHelper","XHRLoader","BinaryTextureLoader","WebGLRenderTargetCube","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","Handlers","setTexturePath","empty","isIntersectionBox","isIntersectionSphere","setFromMatrix","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","barycoordFromPoint","midpoint","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","applyMatrix","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","computeOffsets","removeAttribute","maxInstancedCount","linePrecision","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","renderReverseSided","renderSingleSided","getData","updateCubeMap","GeometryUtils","geometry1","CanvasRenderer","JSONLoader","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","LensFlare","revision","ReactReduxContext","React","createContext","batch","nullListeners","notify","createListenerCollection","first","subscribe","isSubscribed","Subscription","store","parentSub","unsubscribe","handleChangeWrapper","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","Boolean","tryUnsubscribe","Provider","_ref","contextValue","useMemo","subscription","previousState","getState","useEffect","Context","createElement","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","useIsomorphicLayoutEffect","useLayoutEffect","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","forwardRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","props","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","isContextConsumer","useContext","didStoreComeFromProps","dispatch","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","useRef","renderedWrappedComponent","ref","Connect","memo","forwarded","hoistStatics","is","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","arg","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","stack","newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","useSelector","_classCallCheck","instance","Constructor","_defineProperty","obj","writable","_defineProperties","descriptor","_createClass","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","sham","Proxy","_typeof","Symbol","iterator","_possibleConstructorReturn","self","assertThisInitialized","_createSuper","Derived","Super","NewTarget","_setPrototypeOf","_inherits","subClass","superClass","_toConsumableArray","arr","arrayLikeToArray","iter","unsupportedIterableToArray","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","proto","createStore","reducer","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","observable","outerSubscribe","observer","observeState","$$observable","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","process","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","_i","_key","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","actionCreators","boundActionCreators","ownKeys","enumerableOnly","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","_len","funcs","reduce","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","middleware","_assertThisInitialized","ReferenceError","_console","args","alreadyWarned","warnOnce","_len2","_key2","loadNamespaces","i18n","ns","isInitialized","on","initialized","off","hasLoadedNamespace","languages","lng","fallbackLng","lastLng","loadNotPending","loadState","services","backendConnector","bindI18n","backend","isLanguageChangingTo","hasResourceBundle","Component","Apply","privateMap","internal","EventEmitter","maxListeners","localConsole","_events","Set","_callbacks","_maxListeners","eventName","_getCallbacks","_has","findIndex","listenersNumber","callbackInd","_getCallbackIndex","activeCallback","_achieveMaxListener","_callbackIsExists","_addCallback","onceCallback","die","msg","isDraft","DRAFT_STATE","isDraftable","DRAFTABLE","isMap","isSet","each","getArchtype","entry","thing","type_","prop","propOrOldValue","hasMap","hasSet","latest","copy_","base_","shallowCopy","descriptors","desc","deep","isFrozen","dontMutateFrozenCollections","getPlugin","pluginKey","plugin","plugins","loadPlugin","implementation","getCurrentScope","currentScope","usePatchesInScope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","isReplaced","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","NOTHING","rootScope","childValue","finalizeProperty","scope_","finalized_","draft_","generatePatches_","parentState","rootPath","assigned_","autoFreeze_","peek","getDescriptorFromProto","markChanged","prepareCopy","createProxy","proxyMap_","proxySet_","isManual_","traps","objectTraps","arrayTraps","revocable","revoke","createES5Proxy_","currentImpl","archType","hasChanges_","copyHelper","enableES5","proxyProperty","markChangesSweep","drafts","hasArrayChanges","hasObjectChanges","baseValue","baseIsDraft","markChangesRecursively","hasSymbol","hasProxies","for","getOwnPropertyNames","deleteProperty","owner","fn","config","useProxies","setUseProxies","autoFreeze","setAutoFreeze","produce","produceWithPatches","recipe","defaultBase","hasError","arg1","arg2","patches","inversePatches","_this2","ip","createDraft","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","getDependencies","every","dep","dependencyTypes","memoize","memoizeOptions","createSelectorCreator","lastArgs","lastResult","createThunkMiddleware","extraArgument","thunk","withExtraArgument","composeWithDevTools","MiddlewareArray","prepend","curryGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","isBoolean","thunkMiddleware","getDefaultMiddleware","configureStore","curriedGetDefaultMiddleware","devTools","enhancers","rootReducer","middlewareEnhancer","finalCompose","storeEnhancers","composedEnhancer","createAction","prepareAction","prepared","executeReducerBuilderCallback","builderCallback","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","defaultCaseReducer","createSlice","initialState","extraReducers","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","reducerName","maybeReducerWithPrepare","caseReducer","prepareCallback","mapOrBuilderCallback","finalActionMatchers","finalDefaultCaseReducer","caseReducers","cr","createNextState","createReducer","asyncIterator","_slicedToArray","_arr","_n","_d","_e","_s","done","_arrayLikeToArray","arr2","GLTFLoader","dracoLoader","ddsLoader","pluginCallbacks","register","GLTFMaterialsClearcoatExtension","GLTFRegistry","removeAll","_onError","gltf","setDRACOLoader","setDDSLoader","unregister","content","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","asset","GLTFParser","fileLoader","extensionsUsed","extensionName","extensionsRequired","KHR_LIGHTS_PUNCTUAL","GLTFLightsExtension","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","MSFT_TEXTURE_DDS","GLTFTextureDDSExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","setExtensions","setPlugins","KHR_MATERIALS_CLEARCOAT","lightDefs","loadLight","lightIndex","lightNode","lightDef","innerConeAngle","outerConeAngle","getMaterialType","extendParams","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","all","extendMaterialParams","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","BINARY_EXTENSION_CHUNK_TYPES","body","headerView","magic","getUint32","chunkView","chunkIndex","byteLength","chunkLength","chunkType","contentArray","byteOffset","preload","GLTFMeshStandardSGMaterial","isGLTFSpecularGlossinessMaterial","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","_extraUniforms","uniformName","USE_GLOSSINESSMAP","USE_ROUGHNESSMAP","specularGlossinessParams","pbrSpecularGlossiness","diffuseFactor","diffuseTexture","glossinessFactor","specularFactor","specularGlossinessTexture","specGlossMapDef","createMaterial","GLTFCubicSplineInterpolant","decodePrimitive","primitive","bufferViewIndex","bufferView","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","attributeName","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","getDependency","decodeDracoFile","extendTexture","texCoord","stride2","stride3","td","m0","m1","WEBGL_CONSTANTS","5120","5121","5122","5123","5125","5126","WEBGL_FILTERS","9728","9729","9984","9985","9986","9987","WEBGL_WRAPPINGS","33071","33648","10497","WEBGL_TYPE_SIZES","POSITION","NORMAL","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","INTERPOLATION","CUBICSPLINE","LINEAR","STEP","ALPHA_MODES","MIME_TYPE_FORMATS","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","meshDef","targetNames","createPrimitiveKey","primitiveDef","dracoExtension","createAttributesKey","attributesKey","associations","primitiveCache","navigator","userAgent","textureLoader","addPrimitiveAttributes","assignAttributeAccessor","accessorIndex","accessor","gltfAttributeName","targets","maxDisplacement","computeBounds","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","morphPositions","addMorphTargets","toTrianglesDrawMode","numberOfTriangles","newIndices","newGeometry","markDefs","scenes","nodeDefs","nodes","skinDefs","skins","meshDefs","meshes","meshReferences","meshUses","skinLength","joints","nodeIndex","nodeLength","nodeDef","skin","_invokeOne","_invokeAll","dependency","loadScene","loadNode","ext","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","def","bufferIndex","bufferDef","uri","bufferViewDef","bufferViews","sparse","pendingBufferViews","TypedArray","elementBytes","itemBytes","byteStride","ibSlice","ibCacheKey","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","textureIndex","URL","webkitURL","textureDef","textureExtensions","sourceURI","isObjectURL","createObjectURL","revokeObjectURL","sampler","samplers","mapName","mapDef","gltfReference","assignFinalMaterial","useVertexTangents","useVertexColors","useFlatShading","useMorphTargets","useMorphNormals","pointsMaterial","lineMaterial","materialType","materialExtensions","sgExtension","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","alphaMode","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","loadGeometries","primitives","createDracoPrimitive","geometryPromise","promise","meshIndex","cameraIndex","cameraDef","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","input","inputAccessors","outputAccessors","inputAccessor","outputAccessor","targetName","outputArray","scaled","isInterpolantFactoryMethodGLTFCubicSpline","instanceNum","buildNodeHierachy","nodeId","parentObject","pendingJoints","jointNodes","jointNode","sceneIndex","sceneDef","nodeIds","symbols","_objectSpread","i18nInstance","defaultOptions","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","namespaces","getI18n","initReactI18next","setDefaults","react","setI18n","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","arrayWithHoles","iterableToArrayLimit","nonIterableRest","_hasatob","_hasbtoa","btoa","_hasBuffer","Buffer","_TD","_TE","TextEncoder","b64chs","b64tab","tab","b64re","_fromCC","_U8Afrom","it","_mkUriSafe","_tidyB64","btoaPolyfill","bin","u32","asc","pad","_btoa","_fromUint8Array","u8a","strs","cb_utob","cc","re_utob","utob","_encode","encode","urlsafe","re_btou","cb_btou","cccc","btou","atobPolyfill","u24","r1","r2","_atob","_toUint8Array","_decode","_unURI","_unsupportedIterableToArray","minLen","__extends","__","__awaiter","thisArg","_arguments","fulfilled","rejected","__generator","_","label","sent","trys","ops","verb","Bounds","fromClientRect","clientRect","parseBounds","getBoundingClientRect","toCodePoints","str","codePoints","extra","fromCodePoint","codeUnits","codePoint","lookup","TokenType","slice16","initialValue","errorValue","highStart","highValueIndex","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_INDEX_2_BLOCK_LENGTH","SP","BA","HY","CL","CP","EX","IN","NS","OP","IS","NU","PO","PR","SY","AL","EB","EM","H2","H3","ID","JL","JV","JT","SA","UnicodeTrie","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","bytes","view32","polyUint32Array","view16","polyUint16Array","headerLength","Trie","createTrieFromBase64","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","currentIndex","classTypes","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","cssFormattedClasses","lineBreak","wordBreak","types","categories","classType","isLetterNumber","letterNumber","required","isDigit","isHex","isWhiteSpace","isNameStartCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","isIdentifierStart","isNumberStart","stringToNumber","integers","int","fraction","fracd","frac","expsign","exponent","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","_value","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","HASH_TOKEN","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a3","AT_KEYWORD_TOKEN","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","DELIM_TOKEN","digits","questionMarks","digit","UNICODE_RANGE_TOKEN","endDigits","consumeUrlToken","FUNCTION_TOKEN","IDENT_TOKEN","URL_TOKEN","stringToken","STRING_TOKEN","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","endingCodePoint","consumeNumber","repr","number","DIMENSION_TOKEN","PERCENTAGE_TOKEN","NUMBER_TOKEN","hexCodePoint","isSurrogateCodePoint","_tokens","tokenizer","Tokenizer","Parser","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","FUNCTION","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","isAngle","parseNamedSide","ident","deg","colorFunction","SUPPORTED_COLOR_FUNCTIONS","pack","namedColor","COLORS","TRANSPARENT","isTransparent","asString","blue","green","red","getTokenColorValue","rgb","PropertyDescriptorParsingType","BACKGROUND_CLIP","hsl","hsla","rgba","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","CSSImageType","CSSRadialShape","CSSRadialExtent","backgroundClip","LIST","PADDING_BOX","CONTENT_BOX","BORDER_BOX","backgroundColor","TYPE_VALUE","parseColorStop","colorType","processColorStops","stops","lineLength","processStops","previous","absoluteValue","gapBegin","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","getAngleFromCorner","halfLineLength","yDiff","xDiff","findCorner","closest","stat","optimumDistance","optimumCorner","prefixLinearGradient","firstToken","angleType","colorStop","LINEAR_GRADIENT","isGreenPixel","createForeignObjectSVG","xmlns","svg","foreignObject","setAttributeNS","appendChild","loadSerializedSVG","img","Image","onload","onerror","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","createRange","testElement","TEST_HEIGHT","display","selectNode","rangeBounds","rangeHeight","removeChild","testRangeBounds","ctx","testSVG","fillStyle","fillRect","greenImageSrc","getImageData","backgroundImage","testForeignObject","getTime","Logger","instances","getInstance","CacheStorage","_caches","getOrigin","link","_link","href","protocol","hostname","port","isSameOrigin","_origin","location","_current","attachInstance","detachInstance","_options","addImage","isBlobImage","isRenderable","useCORS","isInlineImage","SUPPORT_CORS_IMAGES","useProxy","SUPPORT_CORS_XHR","allowTaint","isInlineBase64Image","imageTimeout","SUPPORT_RESPONSE_TYPE","xhr","FileReader","readAsDataURL","timeout","ontimeout","INLINE_SVG","INLINE_BASE64","INLINE_IMG","SUPPORT_SVG_DRAWING","isSVG","prefixRadialGradient","CIRCLE","FARTHEST_CORNER","isColorStop","acc","ELLIPSE","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","RADIAL_GRADIENT","BACKGROUND_REPEAT","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","backgroundOrigin","backgroundPosition","BACKGROUND_SIZE","backgroundRepeat","parseBackgroundRepeat","NO_REPEAT","REPEAT_X","REPEAT_Y","REPEAT","BORDER_STYLE","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","FLOAT","borderStyleForSide","IDENT_VALUE","NONE","SOLID","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","VALUE","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","bit","parseDisplayValue","LINE_BREAK","float","INLINE_START","INLINE_END","letterSpacing","LIST_STYLE_POSITION","STRICT","lineHeight","TOKEN_VALUE","listStyleImage","LIST_STYLE_TYPE","listStylePosition","INSIDE","OUTSIDE","OVERFLOW","listStyleType","DISC","SQUARE","DECIMAL","CJK_DECIMAL","DECIMAL_LEADING_ZERO","LOWER_ROMAN","UPPER_ROMAN","LOWER_GREEK","LOWER_ALPHA","UPPER_ALPHA","ARABIC_INDIC","ARMENIAN","BENGALI","CAMBODIAN","CJK_EARTHLY_BRANCH","CJK_HEAVENLY_STEM","CJK_IDEOGRAPHIC","DEVANAGARI","ETHIOPIC_NUMERIC","GEORGIAN","GUJARATI","GURMUKHI","HEBREW","HIRAGANA","HIRAGANA_IROHA","JAPANESE_FORMAL","JAPANESE_INFORMAL","KANNADA","KATAKANA","KATAKANA_IROHA","KHMER","KOREAN_HANGUL_FORMAL","KOREAN_HANJA_FORMAL","KOREAN_HANJA_INFORMAL","LAO","LOWER_ARMENIAN","MALAYALAM","MONGOLIAN","MYANMAR","ORIYA","PERSIAN","SIMP_CHINESE_FORMAL","SIMP_CHINESE_INFORMAL","TAMIL","TELUGU","THAI","TIBETAN","TRAD_CHINESE_FORMAL","TRAD_CHINESE_INFORMAL","UPPER_ARMENIAN","DISCLOSURE_OPEN","DISCLOSURE_CLOSED","marginForSide","marginTop","marginRight","marginBottom","marginLeft","OVERFLOW_WRAP","overflow","HIDDEN","SCROLL","AUTO","VISIBLE","TEXT_ALIGN","overflowWrap","BREAK_WORD","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","CENTER","TEXT_TRANSFORM","RELATIVE","ABSOLUTE","FIXED","STICKY","STATIC","textShadow","blur","VISIBILITY","textTransform","UPPERCASE","LOWERCASE","CAPITALIZE","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix3d","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","WORD_BREAK","visibility","COLLAPSE","FONT_STYLE","BREAK_ALL","KEEP_ALL","zIndex","auto","textDecorationColor","textDecorationLine","fontFamily","accumulator","fontSize","fontWeight","fontVariant","PseudoElementType","fontStyle","OBLIQUE","ITALIC","contains","counterIncrement","increments","filtered","counter","increment","counterReset","resets","quotes","close","getQuote","quote","boxShadow","spread","inset","declaration","cssFloat","overflowTuple","overflowX","overflowY","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","styles","CSSParsedDeclaration","getComputedStyle","textNodes","isHTMLElementNode","bounds","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","firstChild","getRangeBounds","setStart","setEnd","breakText","breakWords","bk","breaker","forbiddenBreakpoints","lastEnd","Break","LineBreaker","words","textBounds","textList","SUPPORT_RANGE_BOUNDS","TextBounds","replacementNode","splitText","parseTextBounds","capitalize","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","ElementContainer","baseVal","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","PASSWORD","checked","getInputValue","option","selectedIndex","parseColor","iframe","contentWindow","documentElement","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","createContainer","isImageElement","ImageElementContainer","isCanvasElement","CanvasElementContainer","isSVGElement","SVGElementContainer","isLIElement","LIElementContainer","isOLElement","OLElementContainer","isInputElement","InputElementContainer","isSelectElement","SelectElementContainer","isTextareaElement","TextareaElementContainer","isIFrameElement","IFrameElementContainer","parseNodeTree","nextNode","nextSibling","isTextNode","TextContainer","isElementNode","createsRealStackingContext","createsStackingContext","tagName","isBodyElement","nodeType","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","className","isStyleElement","isScriptElement","counters","getCounterValue","getCounterValues","canReset","counterNames","ROMAN_UPPER","createAdditiveCounter","fallback","suffix","createCounterText","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","coefficient","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","scrolledElements","referenceElement","CounterState","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","restoreNodeScroll","scrollTo","onclone","clonedReferenceElement","fonts","ready","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createStyleClone","sheet","cssRules","css","rule","cssText","textContent","inlineImages","clonedCanvas","clonedCtx","createTextNode","styleBefore","styleAfter","createPseudoHideStyles","CSSParsedCounterDeclaration","resolvePseudoContent","BEFORE","hasAttribute","ignoreElements","copyStyles","insertBefore","after","AFTER","copyCSSStyles","scrollTop","scrollLeft","pseudoElt","CSSParsedPseudoDeclaration","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","PathType","cloneIframeContainer","border","scrolling","onreadystatechange","interval","setInterval","childNodes","clearInterval","item","setProperty","getPropertyValue","internalSubset","publicId","systemId","createStyles","CORNER","equalPath","some","VECTOR","deltaX","deltaY","Vector","startControl","endControl","BEZIER_CURVE","firstHalf","cd","abbc","bccd","BezierCurve","isBezierCurve","tlh","tlv","trh","trv","brh","brv","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderBox","getCurvePoints","TOP_LEFT","topRightBorderBox","TOP_RIGHT","bottomRightBorderBox","BOTTOM_RIGHT","bottomLeftBorderBox","BOTTOM_LEFT","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","kappa","ox","oy","xm","ym","calculateBorderBoxPath","calculatePaddingBoxPath","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","parentStack","effects","BoundCurves","TransformEffect","borderBox","paddingBox","ClipEffect","getParentEffects","processListItems","numbering","listValue","parseStackingContexts","paintContainer","ElementPaint","StackingContext","listItems","parseStackTree","stackingContext","realStackingContext","treatAsRealStackingContext","listOwnerItems","createPathFromCurves","outer1","inner1","outer2","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","CONTAIN","COVER","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","_data","_document","parseMetrics","span","margin","padding","verticalAlign","baseline","offsetTop","middle","getMetrics","_activeEffects","fontMetrics","FontMetrics","textBaseline","applyEffects","popEffect","effect","applyEffect","save","isTransformEffect","isClipEffect","renderStack","globalAlpha","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","renderTextNode","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","renderReplacedElement","windowWidth","windowHeight","beginPath","isTextInputElement","canvasTextAlign","computeLineHeight","formatPath","renderRepeat","renderBackgroundImage","createPattern","createLinearGradient","addColorStop","isRadialGradient","gradient","rx","ry","calculateRadius","createRadialGradient","midX","midY","invF","renderBorder","curvePoints","borderSide","parsePathForBorder","hasBackground","borders","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","calculateContentBoxPath","renderElement","opts","instanceName","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","parseDocumentSize","resourceOptions","logging","removeContainer","foreignObjectRendering","devicePixelRatio","innerWidth","innerHeight","windowBounds","documentCloner","DocumentCloner","clonedElement","bgColor","defaultBackgroundColor","renderOptions","ForeignObjectRenderer","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","ponyfill","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","FRAGMENT","VALID_TAG_NAMES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","http-equiv","itemprop","tabindex","HTML_TAG_MAP","getInnermostProperty","propsList","getTitleFromPropsList","innermostTitle","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","tag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","flattenArray","possibleArray","SELF_CLOSING_TAGS","encodeSpecialCharacters","generateElementAttributesAsString","convertElementAttributesToReactProps","initProps","getMethodsForTag","tags","toComponent","titleAttributes","title","attributeString","flattenedTitle","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","innerHTML","attributeHtml","tagContent","isSelfClosing","mapStateOnServer","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","scriptTags","styleTags","baseTag","noscript","script","providerShape","PropTypes","setHelmet","helmetInstances","canUseDOM","helmet","serverState","isRequired","updateTags","indexToDelete","headElement","head","querySelector","tagNodes","querySelectorAll","oldTags","newTags","newElement","styleSheet","existingTag","isEqualNode","updateAttributes","elementTag","getElementsByTagName","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","indexToSave","commitTagChanges","newState","onChangeClientState","tagUpdates","addedTags","removedTags","_helmetCallback","Dispatcher","rendered","shouldComponentUpdate","nextProps","componentDidUpdate","emitChange","componentWillUnmount","defer","Helmet","fastCompare","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","arrayTypeChildren","mapObjectTypeChildren","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","warnOnInvalidChildren","invariant","nestedChild","mapChildrenToProps","Children","childProps","oneOfType","arrayOf","defaultTitle","bool","titleTemplate","condition","argIndex","framesToPop","consoleLogger","baseLogger","concreteLogger","logger","forward","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","observers","events","cloned","_cloned","rej","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","isIE10","ResourceStore","_EventEmitter","defaultNS","keySeparator","silent","addNamespaces","emit","resources","addResource","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","handle","translator","processor","checkedLoadedFor","Translator","language","resolved","nsSeparator","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy$$1","newKeyToUse","deepKey","extendTranslation","usedDefault","isValidLookup","defaultValue","pluralResolver","getSuffix","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","missingKeyHandler","saveMissing","needsPluralHandling","saveMissingPlurals","getPluralFormsOfKey","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsContextHandling","codes","code","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","returnNull","returnEmptyString","resourceStore","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","deprecate","isSupportedCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","createRules","rules","plurals","PluralResolver","getRule","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","val","handleFormat","missingInterpolationHandler","safeValue","todo","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","includes","elem","Connector","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","errors","addResourceBundle","_getLastOfPath2","pushPath","what","fcName","tried","wait","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","initImmediate","nonExplicitWhitelist","pluralSeparator","partialBundledLanguages","tDescription","_format","transformOptions","noop","i18next","I18n","modules","external","isClone","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","deferred","changeLanguage","usedCallback","append","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","async","detect","fixedT","rest","_this$translator","_this$translator2","exists","_this6","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","test3","shouldUseNative","symbolObservablePonyfill","hasElementType","Element","hasArrayBuffer","equal","entries","valueOf","$$typeof","compareContext","bHasOwnProperty","valueA","valueB","dom","Panel","addPanel","showPanel","begin","usedJSHeapSize","jsHeapSizeLimit","DRACOLoader","decoderPath","decoderConfig","decoderBinary","decoderPending","workerLimit","workerPool","workerNextTaskID","workerSourceURL","defaultAttributeIDs","defaultAttributeTypes","setDecoderPath","setDecoderConfig","setWorkerLimit","setVerbosity","setSkipDequantization","taskConfig","attributeIDs","attributeTypes","useUniqueIDs","decodeGeometry","worker","taskKey","taskCache","cachedTask","taskID","taskCost","geometryPending","_getWorker","_worker","postMessage","_createGeometry","_releaseTask","geometryData","_loadLibrary","_initDecoder","useJS","WebAssembly","librariesPending","libraries","jsContent","wasmBinary","DRACOWorker","Worker","_taskCosts","_taskLoad","onmessage","terminate","decodeAttribute","draco","decoder","dracoGeometry","attributeType","dracoArray","numComponents","num_components","numValues","num_points","DracoFloat32Array","GetAttributeFloatForAllPoints","DracoInt8Array","GetAttributeInt8ForAllPoints","DracoInt16Array","GetAttributeInt16ForAllPoints","DracoInt32Array","GetAttributeInt32ForAllPoints","DracoUInt8Array","GetAttributeUInt8ForAllPoints","DracoUInt16Array","GetAttributeUInt16ForAllPoints","DracoUInt32Array","GetAttributeUInt32ForAllPoints","GetValue","onModuleLoaded","DracoDecoderModule","Decoder","decoderBuffer","DecoderBuffer","Init","decodingStatus","geometryType","GetEncodedGeometryType","TRIANGULAR_MESH","DecodeBufferToMesh","POINT_CLOUD","DecodeBufferToPointCloud","ok","ptr","error_msg","attributeID","GetAttributeByUniqueId","GetAttributeId","GetAttribute","numFaces","num_faces","GetFaceFromMesh","releaseDecoderModule","getDecoderModule","RenderableObject","RenderableFace","RenderableVertex","normalModel","vertexNormalsModel","vertexNormalsLength","positionWorld","positionScreen","RenderableLine","RenderableSprite","Projector","_object","_objectCount","_vertex","_vertexCount","_face","_faceCount","_line","_lineCount","_sprite","_spriteCount","_modelMatrix","_objectPool","_objectPoolLength","_vertexPool","_vertexPoolLength","_facePool","_facePoolLength","_linePool","_linePoolLength","_spritePool","_spritePoolLength","_renderData","_vector4","_clipBox","_boundingBox","_points3","_viewMatrix","_viewProjectionMatrix","_modelViewProjectionMatrix","_clippedVertex1PositionScreen","_clippedVertex2PositionScreen","projectVector","unprojectVector","pickingRay","projectVertex","invW","checkTriangleVisibility","checkBackfaceCulling","setObject","getNextVertexInPool","pushNormal","pushColor","pushUv","pushLine","clipLine","getNextLineInPool","pushTriangle","getNextFaceInPool","addObject","getNextObjectInPool","pushPoint","getNextSpriteInPool","painterSort","alpha1","alpha2","bc1near","bc2near","bc1far","bc2far","projectScene","sortElements","tl","targetVertex","nl","objectWithoutPropertiesLoose","sourceSymbolKeys","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","i18nOptions","addUsedNamespaces","initializedStoreOnce","getT","getFixedT","nsMode","_useState","useState","_useState2","setT","isMounted","boundReset","MouseEvent","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","download","rel","msSaveOrOpenBlob","autoBom","innerText","HTMLElement","safari","onloadend","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","re","example","toRGB","toHex","publish","getTopics","objectNumber","gState","xStep","yStep","stream","cloneIndex","orientation","compress","compressPdf","userUnit","floatPrecision","defaultPathOperation","putOnlyUsedFonts","L","__private__","PubSub","A","getPdfVersion","setPdfVersion","a0","a5","a6","a7","a8","a9","a10","b3","b5","b6","b7","b8","b9","b10","c4","c5","c6","c7","c8","c9","c10","dl","legal","ledger","tabloid","getPageFormats","S","getPageFormat","COMPAT","ADVANCED","F","saveGraphicsState","ot","Dt","Nt","Cn","setFontSize","getFontSize","I","restoreGraphicsState","advancedAPI","compatAPI","isAdvancedAPI","C","roundToPrecision","toFixed","hpf","O","f2","M","E","R","setPrecision","D","U","getFileId","setFileId","H","convertDateToPDFDate","getTimezoneOffset","J","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","W","convertPDFDateToDate","V","setCreationDate","G","getCreationDate","Y","padd2","X","padd2Hex","K","Z","$","Q","tt","et","nt","rt","Jt","Vt","Xt","setCustomOutputDestination","resetCustomOutputDestination","out","st","ut","ct","getStandardFonts","ht","lt","ft","dt","R2L","setR2L","getR2L","gt","setZoomMode","getZoomMode","mt","vt","setPageMode","getPageMode","bt","setLayoutMode","getLayoutMode","setDisplayMode","yt","subject","author","keywords","creator","getDocumentProperty","getDocumentProperties","setDocumentProperties","setProperties","setDocumentProperty","wt","Lt","xt","At","_t","St","Pt","kt","Ft","It","Ct","jt","Bt","Ot","Mt","Et","hotfixes","qt","Rt","Tt","shx","shy","inversed","applyToPoint","xn","applyToRectangle","An","Matrix","Ut","matrixMult","zt","unitMatrix","identityMatrix","Ht","ShadingPattern","TilingPattern","addShadingPattern","beginTilingPattern","Sn","endTilingPattern","Wt","newObject","Gt","newObjectDeferred","Yt","newAdditionalObject","objId","Kt","decodeColorString","Zt","encodeColorString","ch1","ch2","ch3","ch4","pdfColorType","$t","Qt","putStream","alreadyAppliedFilters","addLength1","additionalKeyValues","API","processDataByFilters","reverseChain","putPage","contentsObjId","rootDictionaryObjId","resourceDictionaryObjId","mediaBox","bottomLeftX","bottomLeftY","topRightX","topRightY","cropBox","bleedBox","trimBox","artBox","pageContext","pageNumber","page","ee","putPages","ne","pdfEscapeWithNeededParanthesis","isAlreadyPutted","postScriptName","ie","pages","oe","se","ue","resourcesOid","objectOid","he","le","fe","pe","ge","ve","ye","we","fontName","Ne","isStandardFont","Le","dictionary","xe","foo","alert","bar","Ae","sourceEncoding","autoencode","codePages","noBOM","pdfEscape","Se","beginPage","Fe","Pe","pn","wn","Nn","ke","setPage","Ie","getNumberOfPages","Ce","disableWarning","noFallback","je","putInfo","Be","putCatalog","Oe","putTrailer","Me","putHeader","Ee","putXRef","qe","buildDocument","Re","getBlob","Te","filename","unescape","pdfObjectUrl","pdfJsUrl","PDFViewerApplication","De","Ue","getPageInfo","ze","getPageInfoByObjId","He","getCurrentPageInfo","addPage","insertPage","movePage","deletePage","align","lineHeightFactor","rn","scaleFactor","TabLen","maxWidth","splitTextToSize","mutex","activeFontKey","activeFontSize","rotationDirection","charSpace","bn","setCharSpace","getCharSpace","lang","renderingMode","stroke","usedRenderingMode","pageSize","getWidth","getStringUnitWidth","doKerning","hn","ln","mn","We","clipEvenOdd","discardPath","Ve","isValidStyle","setDefaultPathOperation","Ge","Ye","Je","fillEvenOdd","fillStroke","fillStrokeEvenOdd","Ze","Xe","Ke","$e","setGState","Qe","tn","en","curveTo","rect","roundedRect","SQRT2","circle","setFont","nn","getFont","getFontList","addFont","setLineDash","setLineDashPattern","sn","getLineHeight","un","setLineHeightFactor","cn","getLineHeightFactor","getHorizontalCoordinate","getVerticalCoordinate","getHorizontalCoordinateString","dn","getVerticalCoordinateString","strokeColor","getStrokeColor","getDrawColor","setStrokeColor","setDrawColor","gn","fillColor","getFillColor","setFillColor","textColor","vn","getTextColor","setTextColor","yn","CapJoinStyles","butt","but","miter","rounded","projecting","square","bevel","setLineCap","setLineJoin","setLineMiterLimit","setMiterLimit","GState","Ln","addGState","setCurrentTransformationMatrix","comment","currentPage","pagesContext","Fn","outputDestination","In","jn","Pn","kn","beginFormObject","endFormObject","doFormObject","getFormObject","returnPromise","unload","getPageWidth","setPageWidth","getPageHeight","setPageHeight","getCoordinateString","collections","newObjectDeferredBegin","setWidth","getHeight","setHeight","getPDFVersion","Point","Rectangle","hasHotfix","__acroform__","BBox","clearBit","getBit","getBitForPdf","setBitForPdf","clearBitForPdf","calculateCoordinates","lowerLeft_X","lowerLeft_Y","upperRight_X","upperRight_Y","appearanceStreamContent","DV","maxFontSize","multiline","fields","xForms","acroFormDictionaryRoot","printedOut","acroformPlugin","Fields","hasAnnotation","annotations","_eventID","Kids","Rect","DA","createDefaultAppearanceStream","getKeyValueListForStream","hasAppearanceStream","FieldNum","arrayToPdfArray","writeable","Ff","FT","getOptions","addOption","removeOption","combo","edit","CA","pushButton","radio","caption","appearanceState","_AppearanceType","RadioButton","Circle","createAppearanceStream","optionName","setAppearance","getCA","createOption","Parent","CheckBox","password","On","YesNormal","YesPushDown","Off","OffPushDown","Bezier_C","Cross","calculateCross","x4","addField","AcroFormChoiceField","AcroFormListBox","AcroFormComboBox","AcroFormEditBox","AcroFormButton","AcroFormPushButton","AcroFormRadioButton","AcroFormCheckBox","AcroFormTextField","AcroFormPasswordField","AcroFormAppearance","AcroForm","ChoiceField","ListBox","ComboBox","EditBox","Button","PushButton","TextField","PasswordField","Appearance","__addimage__","PNG","TIFF","JPEG","JPEG2000","GIF87a","GIF89a","WEBP","BMP","getImageFileTypeByImageData","objectId","colorSpace","INDEXED","palette","sMask","DEVICE_CMYK","bitsPerComponent","decodeParameters","predictor","addImage_images","loadFile","alias","color_spaces","DEVICE_RGB","DEVICE_GRAY","CAL_GREY","CAL_RGB","LAB","ICC_BASED","PATTERN","SEPARATION","DEVICE_N","DCT_DECODE","FLATE_DECODE","LZW_DECODE","JPX_DECODE","JBIG2_DECODE","ASCII85_DECODE","ASCII_HEX_DECODE","RUN_LENGTH_DECODE","CCITT_FAX_DECODE","image_compression","FAST","MEDIUM","SLOW","sHashCode","validateStringAsBase64","extractImageFromDataUrl","supportsArrayBuffer","isArrayBuffer","isArrayBufferView","binaryStringToUint8Array","arrayBufferToBinaryString","imageData","compression","convertBase64ToBinaryString","getImageProperties","fileType","contents","_nameMap","magFactor","createAnnotation","textWithLink","getTextWidth","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1649","1655","1657","1658","1659","1662","1663","1664","1667","1668","1670","1671","1672","1676","1677","1678","1681","1688","1700","1702","1705","1709","1711","1713","1715","1722","1723","1726","1728","1729","1733","1734","1735","1736","1737","1739","1740","1744","1746","1747","65247","65154","65156","65160","65166","65248","65165","65258","1617","1612","1613","1614","1615","1616","__arabicParser__","isInArabicSubstitutionA","isArabicLetter","isArabicEndLetter","isArabicAlfLetter","arabicLetterHasIsolatedForm","arabicLetterHasFinalForm","arabicLetterHasInitialForm","arabicLetterHasMedialForm","resolveLigatures","isArabicDiacritic","getCorrectForm","processArabic","autoPrint","addJS","pageWrapXEnabled","pageWrapX","pageWrapYEnabled","pageWrapY","pdf","context2d","__cell__","headerFunction","margins","lastCell","lineNumber","setHeaderFunction","getTextDimensions","cellAddPage","cell","tableHeaderRow","printHeaders","printHeaderRow","table","autoSize","headerBackgroundColor","table_font_size","prompt","setTableHeaderRow","table_x","table_y","isStrokeTransparent","strokeOpacity","strokeStyle","isFillTransparent","fillOpacity","lineJoin","lineCap","globalCompositeOperation","clip_path","miterLimit","ignoreClearRect","arial","Arial","verdana","Verdana","helvetica","Helvetica","fixed","monospace","terminal","cursive","fantasy","serif","isIdentity","startAngle","endAngle","counterclockwise","arcTo","strokeRect","clearRect","ctxStack","isCanvasGradient","getColor","strokeText","setTransform","autoPaging","posX","posY","deltas","colorStops","y3","y4","build_tree","dyn_tree","stat_desc","static_tree","elems","heap_len","heap_max","heap","opt_len","static_len","max_code","pqdownheap","extra_bits","extra_base","max_length","bl_count","good_length","max_lazy","nice_length","max_chain","_length_code","base_length","base_dist","d_code","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","static_l_desc","static_d_desc","static_bl_desc","pending_buf","flush_pending","avail_in","read_buf","total_in","total_out","pending_out","deflateInit","dstate","deflateEnd","deflateParams","deflate","deflateSetDictionary","next_out","next_in","avail_out","next_in_index","next_out_index","flush","adler32cs","responseText","loadImageFile","html2canvas","default","DOMPurify","dompurify","sanitize","template","setProgress","overlay","progress","opt","enableLinks","jsPDF","toContainer","toCanvas","toImg","toPdf","thenList","setPageSize","nodeValue","javascriptEnabled","onrendered","toContext2d","quality","outputImg","outputPdf","doCallback","setMargin","getPageSize","inner","ratio","updateProgress","thenCore","thenExternal","catchExternal","using","export","run","html","createNamedDestinations","makeRef","genIds_r","renderRoot","objStart","count_r","objEnd","processJPEG","numcomponents","pos","eof","ensureBuffer","getByte","readBlock","getBytes","lookChar","getChar","makeSubStream","Stream","skip","FlateStream","getBits","codeSize","codeBuf","bytesPos","getCode","generateHuffmanTable","imgData","readUInt32","compressionMethod","filterMethod","interlaceMethod","numFrames","numPlays","yOffset","readUInt16","disposeOp","blendOp","indexed","grayscale","hasAlphaChannel","pixelBitlength","decodePixels","decodePalette","copyToImageData","_decodedPalette","decodeFrames","createImageData","renderFrame","_timeout","stopAnimation","clearTimeout","_png","has_local_palette","palette_offset","palette_size","data_offset","data_length","transparent_index","interlaced","disposal","frameInfo","decodeAndBlitFrameBGRA","decodeAndBlitFrameRGBA","datav","is_with_alpha","bottom_up","flag","parseHeader","parseBGR","jc","Qb","nd","pd","Tn","Ca","Ka","oa","pa","Jd","Yc","Zc","Sb","Ra","bb","zn","Un","Dn","Hn","Wn","Mb","Xa","ud","hd","jd","Ea","Hr","Wr","Vr","Gr","eb","fb","ea","Tc","Ed","Cd","Fd","lb","Db","Ab","fa","Rd","RGBA","kb","sd","Pd","Qd","Id","fd","Md","hb","da","Da","Sd","ob","ba","ka","vi","dc","Mc","Nc","ec","Rc","Dr","Kb","_r","ma","qr","Tr","Ur","Ib","Jb","Nd","En","Oa","Ci","ji","Si","Mi","Oi","Bi","Pi","ki","Ei","qi","Dc","$r","xc","md","Wb","Ya","Ta","Ua","gc","nc","hc","Yn","Vn","Gn","$n","Qn","Jn","Ba","ca","Ma","Er","tr","er","Rr","ir","Ar","zr","rr","ua","qd","rd","mi","tb","Kn","Pb","Wa","wc","wd","xd","ti","yc","xb","gi","VP8LMapColor32b","Xn","VP8LMapColor8b","Zn","Oc","Qr","Xr","Zr","Jr","Yr","Kr","pi","Sr","ub","yd","Rb","Kd","Ld","Ud","Td","Fb","Bb","Cb","Zb","Lb","Yb","jb","Wc","Xc","Pc","wb","Tb","zd","vd","od","ld","La","dd","tc","Na","la","Sc","Eb","Qc","ia","lc","Za","Ob","$b","Ad","Gc","Hc","Dd","uc","Nb","wa","ya","aa","sc","Od","Kc","ed","Qa","Ic","$c","Aa","Xb","Va","Hb","zb","yb","Ub","za","Jc","pb","Pa","Bd","kc","Ac","Bc","zc","Gd","Hd","rb","sb","oc","pc","sa","ta","ra","Ha","Ia","Ec","ja","Vb","Fc","gd","ga","Fa","Cc","qc","Gb","Uc","mb","rc","Ga","Vc","put","ri","ei","ni","ci","si","hi","ii","ai","Ti","Ui","Vd","Cr","Pr","kr","Fr","Ir","ar","or","ur","hr","sr","lr","fr","dr","pr","gr","mr","br","yr","wr","Nr","Lr","fi","li","di","ui","oi","Or","jr","Br","Mr","kd","xa","gb","Ja","Sa","Lc","$a","ic","mc","bi","wi","yi","Ni","Li","xi","Ai","Ii","Fi","Bn","Ri","Mn","qn","Rn","zi","Predictor0","Predictor1","Predictor2","Predictor3","Predictor4","Predictor5","Predictor6","Predictor7","Predictor8","Predictor9","Predictor10","Predictor11","Predictor12","Predictor13","PredictorAdd0","PredictorAdd1","PredictorAdd2","ColorIndexInverseTransform","MapARGB","VP8LColorIndexInverseTransformAlpha","MapAlpha","VP8LPredictorsAdd","VP8LPredictors","VP8LPredictorsAdd_C","VP8LPredictors_C","UpsampleRgbLinePair","UpsampleBgrLinePair","UpsampleRgbaLinePair","UpsampleBgraLinePair","UpsampleArgbLinePair","UpsampleRgba4444LinePair","UpsampleRgb565LinePair","Di","WebPDecodeRGBA","src_off","src_size","feature_flags","canvas_width","canvas_height","bgcolor","loop_count","offset_x","offset_y","blend","rgbaoutput","dataurl","loop_counter","imgwidth","imgheight","fromBuffer","processPNG","processGIF89A","processGIF87A","fileSize","reserved","headerSize","getInt32","getUint16","bitPP","rawSize","importantColors","getUint8","quad","bit1","bit4","bit8","bit15","bit16","bit24","bit32","processBMP","processWEBP","setLanguage","languageSettings","sq","as","ast","eu","bg","ch","zh","cv","co","eo","fo","fj","fy","fur","el","gu","hu","iu","ks","kk","km","ky","ko","lv","mk","ms","mo","nv","ng","no","om","qu","rm","ro","ru","sg","sk","so","es","sw","sv","th","tig","ts","tk","uk","hsb","vo","xh","zu","languageCode","getCharWidthsArray","widths","Unicode","fof","kerning","widthOfString","widthOfGlyph","characterToGlyph","textIndent","lineIndent","__fontmetrics__","uncompress","WinAnsiEncoding","Courier","ZapfDingbats","existsFileInVFS","getFileFromVFS","TTFFont","glyIdsUsed","canvg","addSvgAsImage","ignoreMouse","ignoreAnimation","ignoreDimensions","Canvg","fromString","putTotalPages","pdfEscape16","viewerPreferences","HideToolbar","explicitSet","valueSet","pdfVersion","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","viewerpreferences","configuration","__metadata__","namespaceuri","metadata_object_number","addMetadata","toUnicode","subset","PDFObject","bbox","stemV","italicAngle","ascender","decender","capHeight","rawData","hmtx","unitsPerEm","cmap","unicode","codeMap","vFS","addFileToVFS","__bidiEngine__","EN","AN","32","251","254","255","hiLevel","doBidiReorder","isInputVisual","isOutputVisual","isInputRtl","isOutputRtl","isSymmetricSwapping","readString","registerTTF","directory","hhea","maxp","post","os2","loca","glyf","lineGap","xMin","xMax","italic_angle","xHeight","familyClass","isSerif","isScript","isFixedPitch","forGlyph","advance","readByte","writeByte","writeUInt32","readInt32","writeInt32","writeUInt16","readInt16","writeInt16","writeString","readShort","writeShort","readLongLong","writeLongLong","readInt","writeInt","scalarType","tableCount","searchRange","entrySelector","rangeShift","tables","checksum","__super__","raw","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","platformID","encodingID","isUnicode","old","new","charMap","subtable","maxGlyphID","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfMetrics","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","ascent","descent","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","underlinePosition","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","names","numGlyphs","languageID","nameID","strings","copyright","fontSubfamily","uniqueSubfamily","postscriptName","trademark","manufacturer","designer","description","vendorUrl","designerUrl","license","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","metrics","lsb","leftSideBearings","glyphFor","lengthOf","numberOfContours","compound","glyphIDs","glyphOffsets","unicodes","generateCmap","glyphsFor","isString","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Adler32","fromUtf8","updateUtf8","RGBELoader","rgbe_error","rgbe_error_code","fgets","lineLimit","consume","RGBEByteToRGBFloat","sourceOffset","destArray","destOffset","RGBEByteToRGBHalf","floatView","int32View","toHalf","byteArray","rgbe_header_info","gamma_re","exposure_re","format_re","dimensions_re","comments","programtype","gamma","exposure","RGBE_ReadHeader","image_rgba_data","data_rgba","byteValue","scanline_buffer","ptr_end","isEncodedRun","rgbeStart","scanline_width","num_scanlines","RGBE_ReadPixels_RLE","numElements","floatArray","halfArray","setDataType","HDRCubeTextureLoader","hdrLoader","loadHDRData","dataTexture","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","_owner","keyPrefix","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createFactory","createRef","isValidElement","lazy","_ctor","_status","_result","useCallback","useImperativeHandle","currentTarget","extractEvents","eventTypes","phasedRegistrationNames","registrationName","stateNode","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","xlinkHref","db","_debugOwner","_debugSource","fileName","return","_valueTracker","stopTracking","defaultChecked","_wrapperState","initialChecked","controlled","activeElement","selected","defaultSelected","disabled","MSApp","execUnsafeLocalFunction","namespaceURI","lastChild","animationend","animationiteration","animationstart","transitionend","transition","alternate","effectTag","memoizedState","dehydrated","sibling","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","srcElement","correspondingUseElement","topLevelType","nativeEvent","targetInst","ancestors","eventSystemFlags","containerInfo","blockedOn","pointerId","unstable_runWithPriority","priority","hydrate","unstable_scheduleCallback","unstable_NormalPriority","bubbled","captured","eventPriority","unstable_UserBlockingPriority","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeWidth","menuitem","embed","keygen","param","wbr","HTMLIFrameElement","contentEditable","autoFocus","previousSibling","dispatchConfig","_targetInst","Wd","Xd","Yd","Zd","$d","Interface","isDefaultPrevented","defaultPrevented","returnValue","eventPool","destructor","getPooled","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","extend","documentMode","beforeInput","compositionEnd","compositionStart","compositionUpdate","keyCode","locale","which","ctrlKey","altKey","metaKey","date","datetime","email","month","tel","week","change","detachEvent","attachEvent","_isInputEventSupported","Alt","Control","Meta","Shift","getModifierState","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","mouseEnter","mouseLeave","pointerEnter","pointerLeave","parentWindow","select","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","27","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","yh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","UNSAFE_componentWillUpdate","componentWillUpdate","pendingContext","retryTime","unstable_avoidThisFallback","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","wasMultiple","multiple","onClick","onclick","WeakSet","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ji","Ki","Qi","_reactRootContainer","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","componentStack","Rj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","Pj","Qj","Sj","firstSuspendedTime","activeElementDetached","focusedElem","selectionRange","Tj","compareDocumentPosition","removeAllRanges","addRange","Uj","Vj","Wj","hidden","Xj","unstable_observedBits","Zj","pendingChildren","ak","ck","dk","ek","_internalRoot","gk","ik","hk","jk","unmount","form","Lj","lk","Events","findFiberByHostInstance","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","symbol","any","instanceOf","objectOf","oneOf","exact","checkPropTypes","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","originalModule","webpackPolyfill","_inheritsLoose","_globalTimeline","_win","_coreInitted","_doc","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","_config","autoSleep","force3D","nullTargetWarn","_defaults","_bigNum","_2PI","_HALF_PI","_gsID","_sqrt","_cos","_sin","_isString","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","_isFuncOrString","_isArray","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_parenthesesExp","_relExp","_delimitedValueExp","_globals","_installScope","_install","_merge","gsap","_missingPlugin","_warn","suppress","_addGlobal","_emptyFunc","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","harnessPlugin","_gsap","harness","targetTest","GSCache","_getCache","_getProperty","_forEachName","_round","_arrayContainsAny","toSearch","toFind","_parseVars","irVars","isLegacy","varsIndex","vars","defaults","inherit","immediateRender","runBackwards","_lazyRender","tween","_lazy","_lazySafeRender","suppressEvents","_numericIfPossible","_passThrough","_setDefaults","_setKeyframeDefaults","toMerge","_mergeDeep","_copyExcluding","excluding","_inheritDefaults","keyframes","_dp","_removeLinkedListItem","firstProp","lastProp","_prev","_next","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","_act","_uncache","_dirty","_recacheAncestors","totalDuration","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","_rDelay","tTime","cycleDuration","_parentToChildTotalTime","parentTime","_ts","_tDur","_setEnd","_rts","_alignPlayhead","totalTime","smoothChildTiming","_time","_postAddChecks","timeline","_initted","_dur","rawTime","_clamp","_zTime","_addToTimeline","skipChecks","_delay","sortBy","_addLinkedListItem","_sort","_recent","_scrollTrigger","trigger","ScrollTrigger","_attemptInitTween","_initTween","_pt","_ticker","_setDuration","skipUncache","dur","_onUpdateTotalDuration","Timeline","_zeroPosition","_parsePosition","labels","recent","clippedDuration","_conditionalReturn","getUnit","_slice","_isArrayLike","nonEmpty","_flatten","leaveStrings","_accumulator","_wake","shuffle","distribute","ease","_parseEase","isDecimal","ratios","ratioX","ratioY","originX","originY","wrapAt","distances","_invertEase","_roundModifier","snap","snapTo","is2D","roundingIncrement","returnFunction","_wrapArray","_replaceRandom","nums","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","_callback","executeLazyFirst","callbackScope","_interrupt","_createPlugin","isFunc","Plugin","_props","instanceDefaults","_renderPropTweens","_addPropTween","kill","_killPropTweensOf","modifier","_addPluginModifier","rawVars","statics","getSetter","_getSetter","aliases","PropTween","_colorLookup","_hue","m2","splitColor","toHSL","forceAlpha","wasHSL","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","_hslExp","_req","_raf","_self","_getTime","_lagThreshold","_adjustedLag","_lastUpdate","_gap","_nextTime","_tick","overlap","elapsed","manual","tick","wake","gsapVersions","GreenSockGlobals","sleep","lagSmoothing","adjustedLag","_fps","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","parsedVal","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","_CE","_configEaseFromString","_insertEase","easeIn","easeOut","easeInOut","lowercaseName","_easeInOutFromOut","_configElastic","amplitude","period","_configBack","overshoot","Linear","easeNone","none","SteppedEase","immediateStart","Animation","repeatDelay","yoyo","_totalTime","_pTime","totalProgress","iteration","_ps","includeRepeats","wrapRepeats","globalTime","restart","includeDelay","atTime","resume","invalidate","isActive","eventCallback","_onUpdate","onFulfilled","_resolve","_then","_prom","_Animation","sortChildren","scrollTrigger","_proto2","Tween","fromTo","fromVars","toVars","delayedCall","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onComplete","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","tDur","crossingStart","_lock","rewinding","doesWrap","repeatRefresh","_hasPause","_forcing","_last","_findNextPauseTween","adjustedTime","addLabel","getChildren","nested","tweens","timelines","ignoreBeforeTime","getById","removeLabel","killTweensOf","_totalTime2","addPause","removePause","onlyActive","getTweensOf","_overwritingTween","parsedTargets","isGlobalTime","_targets","tweenTo","_vars","_onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","includeLabels","updateRoot","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","endNum","startNum","hasRandom","_renderComplexString","matchIndex","fp","parsedStart","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","ptLookup","_parseFuncOrString","_processVars","_ptLookup","cleanVars","hasPriority","gsData","harnessVars","overwritten","onUpdateParams","autoRevert","prevStartAt","_startAt","fullTargets","autoOverwrite","_overwrite","_op","_sortPropTweensByPriority","_onInit","_from","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","_hasNoPausedAncestors","_proto3","onRepeat","prevRatio","_renderZeroDurationTween","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","hasNonDependentRemaining","_setterWithModifier","mSet","TweenMax","TweenLite","TimelineLite","TimelineMax","combined","registerPlugin","getProperty","getter","quickSetter","setters","isTweening","registerEffect","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","wrapYoyo","pipe","functions","unitize","mutate","interpolators","master","install","ticker","globalTimeline","core","globals","getCache","_getPluginPropTween","_buildModifierPlugin","modifiers","_addModifiers","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","withTranslation","I18nextWithTranslation","forwardedRef","_objectWithoutProperties","_useTranslation","_useTranslation2","passDownProps","tReady"],"mappings":"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AC3Bxe,SAAU,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEJtpJ,OAAQ,CACJ,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,eACA,eACA,eACA,eACA,eACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIF2nK,GAA2B,CAC7Bre,SAAU,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEJtpJ,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIFu1K,GAAwB,SAC1B9rM,EACAkQ,EACAC,EACAgkK,EACA43B,EACAC,GAEA,OAAIhsM,EAAQkQ,GAAOlQ,EAAQmQ,EAChB87L,GAAkBjsM,EAAO+rM,EAAUC,EAAO7qM,OAAS,GAI1DgzK,EAAQ0L,SAAS3wB,QAAO,SAACprH,EAAQooK,EAASjrM,GACtC,KAAOjB,GAASksM,GACZlsM,GAASksM,EACTpoK,GAAUqwI,EAAQ59I,OAAOt1B,GAE7B,OAAO6iC,IACR,IAAMkoK,GAIXG,GAAuC,SACzCnsM,EACAosM,EACAC,EACAC,GAEA,IAAIxoK,EAAS,GAEb,GACSuoK,GACDrsM,IAEJ8jC,EAASwoK,EAAStsM,GAAS8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GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,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E,EAAE,GAAG3pB,GAAG4pB,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI3pB,GAAG4pB,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,I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OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,SAAS,GAAG/9B,EAAE,CAAC,IAAI+9B,YAAY,CAAC,OAAO,OAAO,OAAO,OAAO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I,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKvkD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGo+L,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAIQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAKK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,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,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKF,GAAG,KAAKM,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAIC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI6B,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGhC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ+B,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAMhC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KA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K,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAA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","file":"static/js/3.3c487f4f.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\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\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '118';\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 FrontFaceDirectionCW = 0;\nconst FrontFaceDirectionCCW = 1;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 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 CubeUVRefractionMapping = 307;\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 UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\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 SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\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 GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\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\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( 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: function ( 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: function ( 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: function ( 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}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author thezwap\n */\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\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\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( 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: function ( 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: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( 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: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( 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: function ( 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: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( 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: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function () {\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: function () {\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: function () {\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: function () {\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: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\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: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( 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: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( 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: function ( 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: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\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: function ( 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: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( 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: function () {\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\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( 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: function ( 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: function ( 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: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( 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: function ( 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: function () {\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\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 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: function () {\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: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( 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: function ( 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},\n\n\tscale: function ( 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: function ( 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: function ( 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: function ( 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: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( 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 = document.createElementNS( 'http://www.w3.org/1999/xhtml', '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\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};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\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// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\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: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\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\treturn this;\n\n\t},\n\n\ttoJSON: function ( 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\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 ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\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: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( 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} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( 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: function ( 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: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( 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: function ( 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: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\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: function ( 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: function ( 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: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\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: function ( 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: function ( 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\tmultiplyScalar: function ( 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: function ( 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: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function () {\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: function () {\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: function () {\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: function () {\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: function () {\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: function ( 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: function () {\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: function () {\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: function () {\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: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( 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: function ( 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: function ( 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: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\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: function () {\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} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\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*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\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: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( 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 ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\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\tmultiplyQuaternionsFlat: function ( 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} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( 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: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( 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: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\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: function ( 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: function ( 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: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\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: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( 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\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\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: function ( 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: function () {\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: function () {\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: function () {\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: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( 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: function ( 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\tequals: function ( 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: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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: function ( 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: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\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: function ( 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: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( 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: function ( 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: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\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: function ( 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: function ( 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: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\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: function ( 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: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\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: function ( 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: function ( 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: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( 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: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( 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: function ( 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: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( 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: function ( 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: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function () {\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: function () {\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: function () {\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: function () {\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: function () {\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: function ( 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: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( 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: function ( 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: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( 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: function ( 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: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( 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.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( 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( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( 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: function ( 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: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( 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: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( 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: function ( 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: function ( 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: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\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: function () {\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} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( 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: function () {\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: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( 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: function ( 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\textractBasis: function ( 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: function ( 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: function ( 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.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.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: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\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: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( 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: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( 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: function ( 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: function () {\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: function () {\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: function ( 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\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\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\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 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: function ( 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: function () {\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: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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\t return this;\n\n\t},\n\n\tmakeScale: function ( 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: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( 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: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.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.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.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\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: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\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: function ( 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: function ( 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: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( 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: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\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\torder = order || this._order;\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 !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( 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: function ( 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( 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: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( 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: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( 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: function ( 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: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( 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$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( 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.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, 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.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( 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: function ( 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\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\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\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( 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: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\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: function () {},\n\n\ttraverse: function ( 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: function ( 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: function ( 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: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( 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\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\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\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( 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};\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\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.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.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\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\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\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: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) 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.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.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\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( 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: function ( 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: function ( 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: function ( 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: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.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: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( 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: function () {\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: function () {\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: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( 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: function ( 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: function ( 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: function ( object ) {\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 ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\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 ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( 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: function ( 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: function ( 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\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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: function ( 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: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( 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: function ( 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.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\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, _v1$2, _v2, _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, _v1$2, _v2, _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, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( 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: function ( 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: function ( 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: function ( 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: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\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 seperating 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 seperating 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 seperating 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$1 = new Box3();\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( 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: function ( 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$1.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\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( 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: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\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: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( 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: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\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: function ( 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: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( 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\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( 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: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.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$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/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: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - 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: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( 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: function ( 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: function ( 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: function ( 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: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.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 );\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 );\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: function ( 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: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( 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: function ( 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: function ( 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: function ( 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\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( 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: function () {\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: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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 undefined;\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 undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( 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: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( 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: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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\tgetBarycoord: function ( 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$1.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$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( 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} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( 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: function ( 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\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( 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: function () {\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: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( 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: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\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: function ( 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\n/**\n * @author mrdoob / http://mrdoob.com/\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 _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\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 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\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( 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: function ( 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: function ( hex ) {\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\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.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\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\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?)\\(\\s*([^\\)]*)\\)/.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 = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\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\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\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\thandleAlpha( color[ 5 ] );\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 = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\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 = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\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-f0-9]+)$/.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\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\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 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\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: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( 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\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( 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: function ( 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: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.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\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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: function ( 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\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.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: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) 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: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) 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: function ( 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\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( 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\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\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: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\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 && this.sheen.isColor ) data.sheen = this.sheen.getHex();\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.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.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\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\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\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\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.size !== undefined ) data.size = this.size;\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.flatShading === true ) data.flatShading = this.flatShading;\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\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 && 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 && 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.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.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = 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 ( isRoot ) {\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: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\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.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: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( 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: function ( 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: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( 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$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\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: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\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: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\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: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( 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\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( 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: function () {\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\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( 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\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\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 !== 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$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.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: function () {\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 ) {\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$2.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$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.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$2.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$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\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$4.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$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\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\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\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\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\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\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\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$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\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\tindex = indices[ i ] * itemSize;\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(): Geometry 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: function () {\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\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\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\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\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\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: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( 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\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\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: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\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\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( 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.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\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\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, 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( i / 3 ); // triangle number in indexed buffer semantics\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 if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\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\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, 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( i / 3 ); // triangle number in non-indexed buffer semantics\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}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\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.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && 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 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\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\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\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\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\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\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\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// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\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\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\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\twidth = width || 1;\n\t\theight = height || 1;\n\t\tdepth = depth || 1;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\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}\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 ) ) {\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\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\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, 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: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\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: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, 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: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.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: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\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: function () {\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: function ( 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: function () {\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: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = 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.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, 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\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\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.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( 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( renderTarget, 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\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include \",\n\t\t\t\"\t#include \",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#include \",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV = equirectUv( direction );\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( 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\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( 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: function ( 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: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( 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: function ( 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$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 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: function ( 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} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\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\n/**\n * @author mrdoob / http://mrdoob.com/\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 = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\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}\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.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\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\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 ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\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.specularRoughness );\\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 = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\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\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_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_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\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}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\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_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\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 ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\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 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\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 = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.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; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\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 max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\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 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}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\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 linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n return 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#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\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\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\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 = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\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}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\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\\tuniform int maxMipLevel;\\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 )\\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 )\\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\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\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 fogDepth;\\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 texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\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 GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\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 getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.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 getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.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 getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.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 GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3\\tdiffuseColor;\\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\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_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_Diffuse_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;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\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\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, 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_Diffuse_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.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\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_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\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.specularRoughness;\\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#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_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_Diffuse_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 CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * 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 CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\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\\tgetPointDirectLightIrradiance( 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\\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\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\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, vSpotShadowCoord[ 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\\tgetDirectionalDirectLightIrradiance( 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 );\\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 );\\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 = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\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 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\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\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\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 morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\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 * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\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 * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\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 );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\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 ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef 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 );\\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 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 = \"#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\\tvarying vec4 vSpotShadowCoord[ 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 = \"#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\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ 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 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 = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 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_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ 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, vSpotShadowCoord[ 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\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\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 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 )\\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\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar background_vert = \"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\nvar cube_frag = \"#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\nvar cube_vert = \"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\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\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\nvar depth_vert = \"#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\nvar distanceRGBA_frag = \"#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 \\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\nvar distanceRGBA_vert = \"#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\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_frag = \"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\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_vert = \"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}\";\n\nvar meshbasic_frag = \"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\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\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\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_vert = \"#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#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\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\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\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 \\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#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\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 \\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\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\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 \\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\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\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 \\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#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\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\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshtoon_frag = \"#define TOON\\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 \\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\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\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 \\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#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\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}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\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 \\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 \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\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 \\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#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\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\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSPARENCY\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSPARENCY\\n\\tuniform float transparency;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#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#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 \\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 \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSPARENCY\\n\\t\\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#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#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#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\\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}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#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#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\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#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#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#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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\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\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_vert = \"#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}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransparency: { value: 0 },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Takahiro / https://github.com/takahirox\n */\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, normalized, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\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}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\tlet isGLSL3ShaderMaterial = false;\n\n\t\tconst versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( parameters.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\"\n\t];\n\n\tfunction getShaderObject( material, shaderID ) {\n\n\t\tlet shaderobject;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: material.uniforms,\n\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t};\n\n\t\t}\n\n\t\treturn shaderobject;\n\n\t}\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst shaderobject = getShaderObject( material, shaderID );\n\t\tmaterial.onBeforeCompile( shaderobject, renderer );\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: shaderobject.name,\n\n\t\t\tuniforms: shaderobject.uniforms,\n\t\t\tvertexShader: shaderobject.vertexShader,\n\t\t\tfragmentShader: shaderobject.fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\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\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\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\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\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\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * @author jsantell / https://www.jsantell.com/\n\t *\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transparency.value = material.transparency;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\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\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\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_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; 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\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\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\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\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\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\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\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\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}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\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}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\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\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\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\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transparency: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transparency = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transparency = source.transparency;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\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\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\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\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\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\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\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: function () {\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: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\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\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\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\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\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\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( 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\tsetFromPoints: function ( 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: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\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\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( 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: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\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 );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( 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: function ( 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: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( 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 ? false : true;\n\n\t},\n\n\tcontainsBox: function ( 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\n\t},\n\n\tgetParameter: function ( 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\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\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);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\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 ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( 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\ttranslate: function ( 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: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author Emmett Lalish / elalish\n *\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n${_getEncodings()}\n\n#define ENVMAP_TYPE_CUBE_UV\n#include \n\nvec3 getSample(float theta, vec3 axis) {\n\tfloat cosTheta = cos(theta);\n\t// Rodrigues' axis-angle rotation\n\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\treturn bilinearCubeUV(envMap, sampleDirection, mipInt);\n}\n\nvoid main() {\n\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\tif (all(equal(axis, vec3(0.0))))\n\t\taxis = vec3(vOutputDirection.z, 0.0, - vOutputDirection.x);\n\taxis = normalize(axis);\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb += weights[0] * getSample(0.0, axis);\n\tfor (int i = 1; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfloat theta = dTheta * float(i);\n\t\tgl_FragColor.rgb += weights[i] * getSample(-1.0 * theta, axis);\n\t\tgl_FragColor.rgb += weights[i] * getSample(theta, axis);\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n${_getEncodings()}\n\n#include \n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv = equirectUv( outputDirection );\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n${_getEncodings()}\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn `\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\n\n// RH coordinate system; PMREM face-indexing convention\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t} else if (face == 2.0) {\n\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t} else if (face == 5.0) {\n\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t}\n\treturn direction;\n}\n\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn `\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t`;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_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_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","import React from 'react';\nexport var ReactReduxContext =\n/*#__PURE__*/\nReact.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"reactReduxForwardedRef\"]);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer(React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, {}, stateProps, {}, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default\n/*#__PURE__*/\ncreateConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore =\n/*#__PURE__*/\ncreateStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch =\n/*#__PURE__*/\ncreateDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(storeState);\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production' && !selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector =\n/*#__PURE__*/\ncreateSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","'use strict';\n\nconst Apply = Function.prototype.apply;\nconst privateMap = new WeakMap();\n\n// For making private properties.\nfunction internal(obj) {\n if (!privateMap.has(obj)) {\n privateMap.set(obj, {});\n }\n\n return privateMap.get(obj);\n}\n\n/** Class EventEmitter for event-driven architecture. */\nexport default class EventEmitter {\n /**\n * Constructor.\n *\n * @constructor\n * @param {number|null} maxListeners.\n * @param {object} localConsole.\n *\n * Set private initial parameters:\n * _events, _callbacks, _maxListeners, _console.\n *\n * @return {this}\n */\n constructor(maxListeners = null, localConsole = console) {\n const self = internal(this);\n\n self._events = new Set();\n self._callbacks = {};\n self._console = localConsole;\n self._maxListeners = maxListeners === null ?\n null : parseInt(maxListeners, 10);\n\n return this;\n }\n\n /**\n * Add callback to the event.\n *\n * @param {string} eventName.\n * @param {function} callback\n * @param {object|null} context - In than context will be called callback.\n * @param {number} weight - Using for sorting callbacks calls.\n *\n * @return {this}\n */\n _addCallback(eventName, callback, context, weight) {\n this._getCallbacks(eventName)\n .push({\n callback,\n context,\n weight\n });\n\n // Sort the array of callbacks in\n // the order of their call by \"weight\".\n this._getCallbacks(eventName)\n .sort((a, b) => a.weight > b.weight);\n\n return this;\n }\n\n /**\n * Get all callback for the event.\n *\n * @param {string} eventName\n *\n * @return {object|undefined}\n */\n _getCallbacks(eventName) {\n return internal(this)._callbacks[eventName];\n }\n\n /**\n * Get callback's index for the event.\n *\n * @param {string} eventName\n * @param {callback} callback\n *\n * @return {number|null}\n */\n _getCallbackIndex(eventName, callback) {\n return this._has(eventName) ?\n this._getCallbacks(eventName)\n .findIndex((element) => element.callback === callback) : null;\n }\n\n /**\n * Check if we achive maximum of listeners for the event.\n *\n * @param {string} eventName\n *\n * @return {bool}\n */\n _achieveMaxListener(eventName) {\n return (internal(this)._maxListeners !== null &&\n internal(this)._maxListeners <= this.listenersNumber(eventName));\n }\n\n /**\n * Check if callback is already exists for the event.\n *\n * @param {string} eventName\n * @param {function} callback\n * @param {object|null} context - In than context will be called callback.\n *\n * @return {bool}\n */\n _callbackIsExists(eventName, callback, context) {\n const callbackInd = this._getCallbackIndex(eventName, callback);\n const activeCallback = callbackInd !== -1 ?\n this._getCallbacks(eventName)[callbackInd] : void 0;\n\n return (callbackInd !== -1 && activeCallback &&\n activeCallback.context === context);\n }\n\n /**\n * Check is the event was already added.\n *\n * @param {string} eventName\n *\n * @return {bool}\n */\n _has(eventName) {\n return internal(this)._events.has(eventName);\n }\n\n /**\n * Add the listener.\n *\n * @param {string} eventName\n * @param {function} callback\n * @param {object|null} context - In than context will be called callback.\n * @param {number} weight - Using for sorting callbacks calls.\n *\n * @return {this}\n */\n on(eventName, callback, context = null, weight = 1) {\n /* eslint no-unused-vars: 0 */\n const self = internal(this);\n\n if (typeof callback !== 'function') {\n throw new TypeError(`${callback} is not a function`);\n }\n\n // If event wasn't added before - just add it\n // and define callbacks as an empty object.\n if (!this._has(eventName)) {\n self._events.add(eventName);\n self._callbacks[eventName] = [];\n } else {\n // Check if we reached maximum number of listeners.\n if (this._achieveMaxListener(eventName)) {\n self._console.warn(`Max listeners (${self._maxListeners})` +\n ` for event \"${eventName}\" is reached!`);\n }\n\n // Check if the same callback has already added.\n if (this._callbackIsExists(...arguments)) {\n self._console.warn(`Event \"${eventName}\"` +\n ` already has the callback ${callback}.`);\n }\n }\n\n this._addCallback(...arguments);\n\n return this;\n }\n\n /**\n * Add the listener which will be executed only once.\n *\n * @param {string} eventName\n * @param {function} callback\n * @param {object|null} context - In than context will be called callback.\n * @param {number} weight - Using for sorting callbacks calls.\n *\n * @return {this}\n */\n once(eventName, callback, context = null, weight = 1) {\n const onceCallback = (...args) => {\n this.off(eventName, onceCallback);\n return Apply.call(callback, context, args);\n };\n\n return this.on(eventName, onceCallback, context, weight);\n }\n\n /**\n * Remove an event at all or just remove selected callback from the event.\n *\n * @param {string} eventName\n * @param {function} callback\n *\n * @return {this}\n */\n off(eventName, callback = null) {\n const self = internal(this);\n let callbackInd;\n\n if (this._has(eventName)) {\n if (callback === null) {\n // Remove the event.\n self._events.delete(eventName);\n // Remove all listeners.\n self._callbacks[eventName] = null;\n } else {\n callbackInd = this._getCallbackIndex(eventName, callback);\n\n if (callbackInd !== -1) {\n self._callbacks[eventName].splice(callbackInd, 1);\n // Remove all equal callbacks.\n this.off(...arguments);\n }\n }\n }\n\n return this;\n }\n\n /**\n * Trigger the event.\n *\n * @param {string} eventName\n * @param {...args} args - All arguments which should be passed into callbacks.\n *\n * @return {this}\n */\n emit(eventName, ...args) {\n if (this._has(eventName)) {\n // All callbacks will be triggered sorter by \"weight\" parameter.\n this._getCallbacks(eventName)\n .forEach((element) =>\n Apply.call(element.callback, element.context, args)\n );\n }\n\n return this;\n }\n\n /**\n * Clear all events and callback links.\n *\n * @return {this}\n */\n clear() {\n const self = internal(this);\n\n self._events.clear();\n self._callbacks = {};\n\n return this;\n }\n\n /**\n * Returns number of listeners for the event.\n *\n * @param {string} eventName\n *\n * @return {number|null} - Number of listeners for event\n * or null if event isn't exists.\n */\n listenersNumber(eventName) {\n return this._has(eventName) ?\n this._getCallbacks(eventName).length : null;\n }\n}\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t19: \"plugin not loaded\",\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t}\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtypeObject,\n\tArchtypeArray,\n\tArchtypeMap,\n\tArchtypeSet,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\treturn !proto || proto === Object.prototype\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === ArchtypeObject) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): 0 | 1 | 2 | 3 {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? ArchtypeArray\n\t\t: isMap(thing)\n\t\t? ArchtypeMap\n\t\t: isSet(thing)\n\t\t? ArchtypeSet\n\t\t: ArchtypeObject\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === ArchtypeMap\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === ArchtypeMap ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === ArchtypeMap) thing.set(propOrOldValue, value)\n\telse if (t === ArchtypeSet) {\n\t\tthing.delete(propOrOldValue)\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return base.slice()\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\nexport function freeze(obj: any, deep: boolean): void {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tSetState,\n\tImmerScope,\n\tProxyObjectState,\n\tProxyArrayState,\n\tES5ObjectState,\n\tES5ArrayState,\n\tMapState,\n\tDRAFT_STATE\n} from \"../internal\"\n\nexport type Objectish = AnyObject | AnyArray | AnyMap | AnySet\nexport type ObjectishNoSet = AnyObject | AnyArray | AnyMap\n\nexport type AnyObject = {[key: string]: any}\nexport type AnyArray = Array\nexport type AnySet = Set\nexport type AnyMap = Map\n\nexport const ArchtypeObject = 0\nexport const ArchtypeArray = 1\nexport const ArchtypeMap = 2\nexport const ArchtypeSet = 3\n\nexport const ProxyTypeProxyObject = 0\nexport const ProxyTypeProxyArray = 1\nexport const ProxyTypeES5Object = 4\nexport const ProxyTypeES5Array = 5\nexport const ProxyTypeMap = 2\nexport const ProxyTypeSet = 3\n\nexport interface ImmerBaseState {\n\tparent_?: ImmerState\n\tscope_: ImmerScope\n\tmodified_: boolean\n\tfinalized_: boolean\n\tisManual_: boolean\n}\n\nexport type ImmerState =\n\t| ProxyObjectState\n\t| ProxyArrayState\n\t| ES5ObjectState\n\t| ES5ArrayState\n\t| MapState\n\t| SetState\n\n// The _internal_ type used for drafts (not to be confused with Draft, which is public facing)\nexport type Drafted = {\n\t[DRAFT_STATE]: T\n} & Base\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyTypeES5Array,\n\tProxyTypeES5Object,\n\tProxyTypeMap,\n\tProxyTypeSet,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\trootState: ImmerState,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(__DEV__ ? 18 : 19, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tplugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: typeof ProxyTypeES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: typeof ProxyTypeES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: typeof ProxyTypeMap\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: typeof ProxyTypeSet\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyTypeProxyObject,\n\tProxyTypeProxyArray,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyTypeProxyObject ||\n\t\tstate.type_ === ProxyTypeProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyTypeES5Object,\n\tProxyTypeES5Array,\n\tProxyTypeSet,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE],\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumarable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyTypeES5Object || state.type_ === ProxyTypeES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line\n\t\t// back to each(result, ....)\n\t\teach(\n\t\t\tstate.type_ === ProxyTypeSet ? new Set(result) : result,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyTypeSet && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyTypeProxyObject,\n\tProxyTypeProxyArray\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: typeof ProxyTypeProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: typeof ProxyTypeProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyTypeProxyArray : (ProxyTypeProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(state, prop: string /* strictly not, but helps TS */, value) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tstate.assigned_[prop] = true\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existig to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tif (\n\t\t\t\tis(value, peek(latest(state), prop)) &&\n\t\t\t\t(value !== undefined || has(state.base_, prop))\n\t\t\t)\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyTypeProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\treturn objectTraps.deleteProperty!.call(this, state[0], prop)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tisMinified,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = __DEV__ ? true /* istanbul ignore next */ : !isMinified\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tthis.produce = this.produce.bind(this)\n\t\tthis.produceWithPatches = this.produceWithPatches.bind(this)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce(base: any, recipe?: any, patchListener?: any) {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === NOTHING) return undefined\n\t\t\tif (result === undefined) result = base\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches(arg1: any, arg2?: any, arg3?: any): any {\n\t\tif (typeof arg1 === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => arg1(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst nextState = this.produce(arg1, arg2, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [nextState, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is disabled in production.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: Objectish, patches: Patch[]) {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches.slice(i + 1))\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtypeMap,\n\tArchtypeSet,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === ArchtypeSet ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase ArchtypeMap:\n\t\t\treturn new Map(value)\n\t\tcase ArchtypeSet:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyTypeES5Array,\n\tProxyTypeES5Object,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyTypeES5Array : (ProxyTypeES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyTypeES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyTypeES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyTypeES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyTypeES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyTypeES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is disabled in production.\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/* istanbul ignore next */\nfunction mini() {}\nexport const isMinified = mini.name !== \"mini\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","function defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nexport var createSelector = createSelectorCreator(defaultMemoize);\n\nexport function createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","import { Action, ActionCreator, StoreEnhancer, compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface EnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator[] | { [key: string]: ActionCreator }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n date?: boolean\r\n regex?: boolean\r\n undefined?: boolean\r\n error?: boolean\r\n symbol?: boolean\r\n map?: boolean\r\n set?: boolean\r\n function?: boolean | Function\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: (action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: (state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsBlacklist`/`actionsWhitelist` parameters.\r\n */\r\n predicate?: (state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | ((action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: {\r\n (options: EnhancerOptions): typeof compose\r\n (...funcs: Array>): StoreEnhancer\r\n} =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function() {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, (arguments as any) as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: EnhancerOptions): StoreEnhancer\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function() {\r\n return function(noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * protoype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = value\r\n while (Object.getPrototypeOf(proto) !== null) {\r\n proto = Object.getPrototypeOf(proto)\r\n }\r\n\r\n return Object.getPrototypeOf(value) === proto\r\n}\r\n","import { Middleware } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware\r\n> extends Array {\r\n concat>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray\r\n\r\n concat>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray\r\n\r\n concat(...arr: any[]) {\r\n return new MiddlewareArray(...super.concat(...arr))\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray\r\n\r\n prepend>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n","import { Middleware, AnyAction } from 'redux'\r\nimport thunkMiddleware, { ThunkMiddleware } from 'redux-thunk'\r\nimport {\r\n /* PROD_START_REMOVE_UMD */\r\n createImmutableStateInvariantMiddleware,\r\n /* PROD_STOP_REMOVE_UMD */\r\n ImmutableStateInvariantMiddlewareOptions\r\n} from './immutableStateInvariantMiddleware'\r\n\r\nimport {\r\n createSerializableStateInvariantMiddleware,\r\n SerializableStateInvariantMiddlewareOptions\r\n} from './serializableStateInvariantMiddleware'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware\r\n :\r\n | ThunkMiddleware //The ThunkMiddleware with a `null` ExtraArgument is here to provide backwards-compatibility.\r\n | ThunkMiddleware\r\n\r\nexport type CurriedGetDefaultMiddleware = <\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray | ThunkMiddlewareFor>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray | ThunkMiddlewareFor> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true\r\n } = options\r\n\r\n let middlewareArray: Middleware<{}, S>[] = new MiddlewareArray()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import {\r\n createStore,\r\n compose,\r\n applyMiddleware,\r\n combineReducers,\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n DeepPartial,\r\n Dispatch\r\n} from 'redux'\r\nimport {\r\n composeWithDevTools,\r\n EnhancerOptions as DevToolsOptions\r\n} from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport {\r\n ThunkMiddlewareFor,\r\n curryGetDefaultMiddleware,\r\n CurriedGetDefaultMiddleware\r\n} from './getDefaultMiddleware'\r\nimport { DispatchForMiddlewares } from './tsHelpers'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback = (\r\n defaultEnhancers: StoreEnhancer[]\r\n) => StoreEnhancer[]\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer | ReducersMapObject\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n // NOTE: The needlessly complicated `S extends any ? S : S` instead of just\r\n // `S` ensures that the TypeScript compiler doesn't attempt to infer `S`\r\n // based on the value passed as `preloadedState`, which might be a partial\r\n // state rather than the full thing.\r\n preloadedState?: DeepPartial\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: StoreEnhancer[] | ConfigureEnhancersCallback\r\n}\r\n\r\ntype Middlewares = ReadonlyArray>\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport interface EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> extends Store {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all it's middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: DispatchForMiddlewares & Dispatch\r\n}\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param config The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = [ThunkMiddlewareFor]\r\n>(options: ConfigureStoreOptions): EnhancedStore {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined\r\n } = options || {}\r\n\r\n let rootReducer: Reducer\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer)\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n const middlewareEnhancer = applyMiddleware(\r\n ...(typeof middleware === 'function'\r\n ? middleware(curriedGetDefaultMiddleware)\r\n : middleware)\r\n )\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools)\r\n })\r\n }\r\n\r\n let storeEnhancers: StoreEnhancer[] = [middlewareEnhancer]\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(storeEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as any\r\n\r\n return createStore(\r\n rootReducer,\r\n preloadedState as DeepPartial,\r\n composedEnhancer\r\n )\r\n}\r\n","import { Action } from 'redux'\r\nimport {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny\r\n} from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction

=\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction | void,\r\n T extends string = string\r\n> = PA extends PrepareAction\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters,\r\n P,\r\n T,\r\n ReturnType extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\ninterface BaseActionCreator {\r\n type: T\r\n match(action: Action): action is PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n (payload: PT): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction

| void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload,\r\n // else\r\n ActionCreatorWithPayload\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overriden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass it's arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction

(\r\n type: T\r\n): PayloadActionCreator\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overriden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass it's arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error })\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\nexport function isFSA(\r\n action: unknown\r\n): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isPlainObject(action) &&\r\n typeof (action as any).type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType(\r\n actionCreator: PayloadActionCreator\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import { Action, AnyAction } from 'redux'\r\nimport {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcher,\r\n ActionMatcherDescriptionCollection\r\n} from './createReducer'\r\n\r\nexport interface TypedActionCreator {\r\n (...args: any[]): Action\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder {\r\n /**\r\n * Add a case reducer for actions created by this action creator.\r\n * @param actionCreator\r\n * @param reducer\r\n */\r\n addCase>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer>\r\n ): ActionReducerMapBuilder\r\n /**\r\n * Add a case reducer for actions with the specified type.\r\n * @param type\r\n * @param reducer\r\n */\r\n addCase>(\r\n type: Type,\r\n reducer: CaseReducer\r\n ): ActionReducerMapBuilder\r\n\r\n /**\r\n * Adds a reducer for all actions, using `matcher` as a filter function.\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined if - even if a case reducer already matched.\r\n * @param matcher A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates)\r\n * function\r\n * @param reducer\r\n */\r\n addMatcher(\r\n matcher: ActionMatcher,\r\n reducer: CaseReducer\r\n ): Omit, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer\r\n */\r\n addDefaultCase(reducer: CaseReducer): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback(\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): [\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n CaseReducer | undefined\r\n] {\r\n const actionsMap: CaseReducers = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection = []\r\n let defaultCaseReducer: CaseReducer | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior, \r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (type in actionsMap) {\r\n throw new Error(\r\n 'addCase cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher(\r\n matcher: ActionMatcher,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n }\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import { Reducer } from 'redux'\r\nimport {\r\n ActionCreatorWithoutPayload,\r\n createAction,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload\r\n} from './createAction'\r\nimport { CaseReducer, CaseReducers, createReducer } from './createReducer'\r\nimport {\r\n ActionReducerMapBuilder,\r\n executeReducerBuilderCallback\r\n} from './mapBuilders'\r\nimport { Omit, NoInfer } from './tsHelpers'\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator

= PayloadActionCreator

\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state to be returned by the slice reducer.\r\n */\r\n initialState: State\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * Alternatively, a callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n */\r\n extraReducers?:\r\n | CaseReducers, any>\r\n | ((builder: ActionReducerMapBuilder>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare = {\r\n reducer: CaseReducer\r\n prepare: PrepareAction\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers = {\r\n [K: string]:\r\n | CaseReducer>\r\n | CaseReducerWithPrepare>\r\n}\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare\r\n : ActionCreatorForCaseReducer\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n CR extends { prepare: any }\r\n> = _ActionCreatorWithPreparedPayload\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator

\r\n : ActionCreatorWithoutPayload\r\n : ActionCreatorWithoutPayload\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions\r\n): Slice {\r\n const { name, initialState } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n const reducers = options.reducers || {}\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined\r\n ] =\r\n typeof options.extraReducers === 'undefined'\r\n ? []\r\n : typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record = {}\r\n const sliceCaseReducersByType: Record = {}\r\n const actionCreators: Record = {}\r\n\r\n reducerNames.forEach(reducerName => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer\r\n let prepareCallback: PrepareAction | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n const reducer = createReducer(\r\n initialState,\r\n finalCaseReducers as any,\r\n actionMatchers,\r\n defaultCaseReducer\r\n )\r\n\r\n return {\r\n name,\r\n reducer,\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any\r\n }\r\n}\r\n","import createNextState, { Draft, isDraft, isDraftable } from 'immer'\r\nimport { AnyAction, Action, Reducer } from 'redux'\r\nimport {\r\n executeReducerBuilderCallback,\r\n ActionReducerMapBuilder\r\n} from './mapBuilders'\r\nimport { NoInfer } from './tsHelpers'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions = Record\r\n\r\nexport interface ActionMatcher {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription = {\r\n matcher: ActionMatcher\r\n reducer: CaseReducer>\r\n}\r\n\r\nexport type ActionMatcherDescriptionCollection = Array<\r\n ActionMatcherDescription\r\n>\r\n\r\n/**\r\n * An *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer = (\r\n state: Draft,\r\n action: A\r\n) => S | void\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer : void\r\n}\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @param initialState The initial state to be returned by the reducer.\r\n * @param actionsMap A mapping from action types to action-type-specific\r\n * case reducers.\r\n * @param actionMatchers An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @public\r\n */\r\nexport function createReducer<\r\n S,\r\n CR extends CaseReducers = CaseReducers\r\n>(\r\n initialState: S,\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection,\r\n defaultCaseReducer?: CaseReducer\r\n): Reducer\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * @param initialState The initial state to be returned by the reducer.\r\n * @param builderCallback A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n *\r\n * @public\r\n */\r\nexport function createReducer(\r\n initialState: S,\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): Reducer\r\n\r\nexport function createReducer(\r\n initialState: S,\r\n mapOrBuilderCallback:\r\n | CaseReducers\r\n | ((builder: ActionReducerMapBuilder) => void),\r\n actionMatchers: ActionMatcherDescriptionCollection = [],\r\n defaultCaseReducer?: CaseReducer\r\n): Reducer {\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n return function(state = initialState, action): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer)\r\n ]\r\n if (caseReducers.filter(cr => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (typeof result === 'undefined') {\r\n return previousState\r\n }\r\n\r\n return result\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (typeof result === 'undefined') {\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable> rather\r\n // than an Immutable, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n}\r\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds';\nimport {color, Color, COLORS, isTransparent} from './css/types/color';\nimport {Parser} from './css/syntax/parser';\nimport {CloneOptions, DocumentCloner} from './dom/document-cloner';\nimport {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser';\nimport {Logger} from './core/logger';\nimport {CacheStorage, ResourceOptions} from './core/cache-storage';\nimport {CanvasRenderer, RenderOptions} from './render/canvas/canvas-renderer';\nimport {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer';\n\nexport type Options = CloneOptions &\n RenderOptions &\n ResourceOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n logging: boolean;\n removeContainer?: boolean;\n };\n\nconst parseColor = (value: string): Color => color.parse(Parser.create(value).parseComponentValue());\n\nconst html2canvas = (element: HTMLElement, options: Partial = {}): Promise => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial): Promise => {\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const instanceName = (Math.round(Math.random() * 1000) + Date.now()).toString(16);\n\n const {width, height, left, top} =\n isBodyElement(element) || isHTMLElement(element) ? parseDocumentSize(ownerDocument) : parseBounds(element);\n\n const defaultResourceOptions = {\n allowTaint: false,\n imageTimeout: 15000,\n proxy: undefined,\n useCORS: false\n };\n\n const resourceOptions: ResourceOptions = {...defaultResourceOptions, ...opts};\n\n const defaultOptions = {\n backgroundColor: '#ffffff',\n cache: opts.cache ? opts.cache : CacheStorage.create(instanceName, resourceOptions),\n logging: true,\n removeContainer: true,\n foreignObjectRendering: false,\n scale: defaultView.devicePixelRatio || 1,\n windowWidth: defaultView.innerWidth,\n windowHeight: defaultView.innerHeight,\n scrollX: defaultView.pageXOffset,\n scrollY: defaultView.pageYOffset,\n x: left,\n y: top,\n width: Math.ceil(width),\n height: Math.ceil(height),\n id: instanceName\n };\n\n const options: Options = {...defaultOptions, ...resourceOptions, ...opts};\n\n const windowBounds = new Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight);\n\n Logger.create({id: instanceName, enabled: options.logging});\n Logger.getInstance(instanceName).debug(`Starting document clone`);\n const documentCloner = new DocumentCloner(element, {\n id: instanceName,\n onclone: options.onclone,\n ignoreElements: options.ignoreElements,\n inlineImages: options.foreignObjectRendering,\n copyStyles: options.foreignObjectRendering\n });\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const bgColor = opts.backgroundColor;\n const defaultBackgroundColor =\n typeof bgColor === 'string' ? parseColor(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff;\n\n const backgroundColor =\n element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n\n const renderOptions = {\n id: instanceName,\n cache: options.cache,\n canvas: options.canvas,\n backgroundColor,\n scale: options.scale,\n x: options.x,\n y: options.y,\n scrollX: options.scrollX,\n scrollY: options.scrollY,\n width: options.width,\n height: options.height,\n windowWidth: options.windowWidth,\n windowHeight: options.windowHeight\n };\n\n let canvas;\n\n if (options.foreignObjectRendering) {\n Logger.getInstance(instanceName).debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n Logger.getInstance(instanceName).debug(`Document cloned, using computed rendering`);\n\n CacheStorage.attachInstance(options.cache);\n Logger.getInstance(instanceName).debug(`Starting DOM parsing`);\n const root = parseTree(clonedElement);\n CacheStorage.detachInstance();\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n Logger.getInstance(instanceName).debug(`Starting renderer`);\n\n const renderer = new CanvasRenderer(renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (options.removeContainer === true) {\n if (!DocumentCloner.destroy(container)) {\n Logger.getInstance(instanceName).error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n Logger.getInstance(instanceName).debug(`Finished rendering`);\n Logger.destroy(instanceName);\n CacheStorage.destroy(instanceName);\n return canvas;\n};\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","/**\n * @author Rich Tibbett / https://github.com/richtr\n * @author mrdoob / http://mrdoob.com/\n * @author Tony Parisi / http://www.tonyparisi.com/\n * @author Takahiro / https://github.com/takahirox\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nimport {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tCanvasTexture,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternionKeyframeTrack,\n\tRGBAFormat,\n\tRGBFormat,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from \"../../../build/three.module.js\";\n\nvar GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ddsLoader = null;\n\n\t\tthis.pluginCallbacks = [];\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\n\t}\n\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar resourcePath;\n\n\t\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\t\tresourcePath = this.resourcePath;\n\n\t\t\t} else if ( this.path !== '' ) {\n\n\t\t\t\tresourcePath = this.path;\n\n\t\t\t} else {\n\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t\t}\n\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tvar _onError = function ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t};\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\t\tif ( scope.crossOrigin === 'use-credentials' ) {\n\n\t\t\t\tloader.setWithCredentials( true );\n\n\t\t\t}\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, _onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t_onError( e );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, _onError );\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDDSLoader: function ( ddsLoader ) {\n\n\t\t\tthis.ddsLoader = ddsLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\t\t\tvar plugins = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, {\n\n\t\t\t\tpath: path || this.resourcePath || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager\n\n\t\t\t} );\n\n\t\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\t\tfor ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\t\tvar plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t\t// Remove this workaround if we move all the existing\n\t\t\t\t// extension handlers to plugin system\n\t\t\t\textensions[ plugin.name ] = true;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFLightsExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.setExtensions( extensions );\n\t\t\tparser.setPlugins( plugins );\n\t\t\tparser.parse( onLoad, onError );\n\n\t\t}\n\n\t} );\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\n\n\t\tif ( ! ddsLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = ddsLoader;\n\n\t}\n\n\t/**\n\t * Punctual Lights Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\t */\n\tfunction GLTFLightsExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};\n\t\tthis.lightDefs = extension.lights || [];\n\n\t}\n\n\tGLTFLightsExtension.prototype.loadLight = function ( lightIndex ) {\n\n\t\tvar lightDef = this.lightDefs[ lightIndex ];\n\t\tvar lightNode;\n\n\t\tvar color = new Color( 0xffffff );\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".' );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = lightDef.name || ( 'light_' + lightIndex );\n\n\t\treturn Promise.resolve( lightNode );\n\n\t};\n\n\t/**\n\t * Unlit Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\t */\n\tfunction GLTFMaterialsUnlitExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n\n\t\treturn MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Clearcoat Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n\t */\n\tfunction GLTFMaterialsClearcoatExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tGLTFMaterialsClearcoatExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tvar scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/* BINARY EXTENSION */\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Texture Transform Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n\t */\n\tfunction GLTFTextureTransformExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\n\t/**\n\t * A sub class of StandardMaterial with some of the functionality\n\t * changed via the `onBeforeCompile` callback\n\t * @pailhead\n\t */\n\n\tfunction GLTFMeshStandardSGMaterial( params ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tvar specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.specularRoughness += geometryRoughness;',\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t].join( '\\n' );\n\n\t\tvar uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\t// please see #14031 or #13198 for an alternate approach\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( var uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float roughness;', 'uniform vec3 specular;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float metalness;', 'uniform float glossiness;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\t/*eslint-disable*/\n\t\tObject.defineProperties(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tspecular: {\n\t\t\t\t\tget: function () { return uniforms.specular.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specular.value = v; }\n\t\t\t\t},\n\t\t\t\tspecularMap: {\n\t\t\t\t\tget: function () { return uniforms.specularMap.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specularMap.value = v; }\n\t\t\t\t},\n\t\t\t\tglossiness: {\n\t\t\t\t\tget: function () { return uniforms.glossiness.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.glossiness.value = v; }\n\t\t\t\t},\n\t\t\t\tglossinessMap: {\n\t\t\t\t\tget: function () { return uniforms.glossinessMap.value; },\n\t\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\t\tuniforms.glossinessMap.value = v;\n\t\t\t\t\t\t//how about something like this - @pailhead\n\t\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\t\t\tthis.defines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdelete this.defines.USE_ROUGHNESSMAP;\n\t\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t/*eslint-enable*/\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t};\n\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'normalMapType',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\n\n\t\t\t\t}\n\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( materialParams ) {\n\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\t\t\tmaterial.fog = true;\n\n\t\t\t\tmaterial.color = materialParams.color;\n\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = materialParams.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\t\t\tmaterial.specular = materialParams.specular;\n\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Mesh Quantization Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n\t */\n\tfunction GLTFMeshQuantizationExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\t\tvar s0 = 1 - s2;\n\t\tvar s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: NearestFilter,\n\t\t9729: LinearFilter,\n\t\t9984: NearestMipmapNearestFilter,\n\t\t9985: LinearMipmapNearestFilter,\n\t\t9986: NearestMipmapLinearFilter,\n\t\t9987: LinearMipmapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: ClampToEdgeWrapping,\n\t\t33648: MirroredRepeatWrapping,\n\t\t10497: RepeatWrapping\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTANGENT: 'tangent',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tJOINTS_0: 'skinIndex',\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\t\tLINEAR: InterpolateLinear,\n\t\tSTEP: InterpolateDiscrete\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\tvar MIME_TYPE_FORMATS = {\n\t\t'image/png': RGBAFormat,\n\t\t'image/jpeg': RGBFormat\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial( cache ) {\n\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\treturn cache[ 'DefaultMaterial' ];\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {Object3D|Material|BufferGeometry} object\n\t * @param {GLTF.definition} gltfDef\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {BufferGeometry} geometry\n\t * @param {Array} targets\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addMorphTargets( geometry, targets, parser ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\n\n\t\tvar pendingPositionAccessors = [];\n\t\tvar pendingNormalAccessors = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t\t: geometry.attributes.position;\n\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t\t: geometry.attributes.normal;\n\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( [\n\t\t\tPromise.all( pendingPositionAccessors ),\n\t\t\tPromise.all( pendingNormalAccessors )\n\t\t] ).then( function ( accessors ) {\n\n\t\t\tvar morphPositions = accessors[ 0 ];\n\t\t\tvar morphNormals = accessors[ 1 ];\n\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t\treturn geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createPrimitiveKey( primitiveDef ) {\n\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\t\tvar geometryKey;\n\n\t\tif ( dracoExtension ) {\n\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t\t} else {\n\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t\t}\n\n\t\treturn geometryKey;\n\n\t}\n\n\tfunction createAttributesKey( attributes ) {\n\n\t\tvar attributesKey = '';\n\n\t\tvar keys = Object.keys( attributes ).sort();\n\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t\t}\n\n\t\treturn attributesKey;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\t\tif ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tGLTFParser.prototype.setExtensions = function ( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t};\n\n\tGLTFParser.prototype.setPlugins = function ( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t};\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis.markDefs();\n\n\t\tPromise.all( [\n\n\t\t\tthis.getDependencies( 'scene' ),\n\t\t\tthis.getDependencies( 'animation' ),\n\t\t\tthis.getDependencies( 'camera' ),\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tonLoad( result );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype.markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\tvar meshReferences = {};\n\t\tvar meshUses = {};\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Meshes can (and should) be reused by multiple nodes in a glTF asset. To\n\t\t// avoid having more than one Mesh with the same name, count\n\t\t// references and rename instances below.\n\t\t//\n\t\t// Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tif ( meshReferences[ nodeDef.mesh ] === undefined ) {\n\n\t\t\t\t\tmeshReferences[ nodeDef.mesh ] = meshUses[ nodeDef.mesh ] = 0;\n\n\t\t\t\t}\n\n\t\t\t\tmeshReferences[ nodeDef.mesh ] ++;\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.json.meshReferences = meshReferences;\n\t\tthis.json.meshUses = meshUses;\n\n\t};\n\n\tGLTFParser.prototype._invokeOne = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tvar result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t};\n\n\tGLTFParser.prototype._invokeAll = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tpending.push( func( extensions[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this.loadTexture( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'light':\n\t\t\t\t\tdependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\t\tvar textureLoader = this.textureLoader;\n\n\t\tvar URL = self.URL || self.webkitURL;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\t// Load Texture resource.\n\n\t\t\tvar loader = options.manager.getHandler( sourceURI );\n\n\t\t\tif ( ! loader ) {\n\n\t\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t\t: textureLoader;\n\n\t\t\t}\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tvar onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tresolve( new CanvasTexture( imageBitmap ) );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\t// Ignore unknown mime types, like DDS files.\n\t\t\tif ( source.mimeType in MIME_TYPE_FORMATS ) {\n\n\t\t\t\ttexture.format = MIME_TYPE_FORMATS[ source.mimeType ];\n\n\t\t\t}\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, {\n\t\t\t\ttype: 'textures',\n\t\t\t\tindex: textureIndex\n\t\t\t} );\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\n\n\t\tvar parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture.isCompressedTexture ) {\n\n\t\t\t\tswitch ( mapName ) {\n\n\t\t\t\t\tcase 'aoMap':\n\t\t\t\t\tcase 'emissiveMap':\n\t\t\t\t\tcase 'metalnessMap':\n\t\t\t\t\tcase 'normalMap':\n\t\t\t\t\tcase 'roughnessMap':\n\t\t\t\t\t\ttexture.format = RGBFormat;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tvar gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accomodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\n\n\t\tvar geometry = mesh.geometry;\n\t\tvar material = mesh.material;\n\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\tif ( useVertexTangents ) cachedMaterial.vertexTangents = true;\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\tif ( material.normalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.normalScale.y = - material.normalScale.y;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.clearcoatNormalScale.y = - material.clearcoatNormalScale.y;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t};\n\n\tGLTFParser.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { type: 'materials', index: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t */\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar box = new Box3();\n\n\t\tif ( attributes.POSITION !== undefined ) {\n\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\t\tvar min = accessor.min;\n\t\t\tvar max = accessor.max;\n\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\tbox.set(\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar targets = primitiveDef.targets;\n\n\t\tif ( targets !== undefined ) {\n\n\t\t\tvar maxDisplacement = new Vector3();\n\t\t\tvar vector = new Vector3();\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\t\tvar min = accessor.min;\n\t\t\t\t\tvar max = accessor.max;\n\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\t\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n\t\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n\t\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\n\t\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\t\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\t\t\tbox.expandByVector( maxDisplacement );\n\n\t\t}\n\n\t\tgeometry.boundingBox = box;\n\n\t\tvar sphere = new Sphere();\n\n\t\tbox.getCenter( sphere.center );\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\t\tgeometry.boundingSphere = sphere;\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar pending = [];\n\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t\t.then( function ( accessor ) {\n\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\t\tgeometry.setIndex( accessor );\n\n\t\t\t} );\n\n\t\t\tpending.push( accessor );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t\tcomputeBounds( geometry, primitiveDef, parser );\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\treturn primitiveDef.targets !== undefined\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t\t: geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {Number} drawMode\n\t * @return {BufferGeometry}\n\t */\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\t\tvar index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tvar indices = [];\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar numberOfTriangles = index.count - 2;\n\t\tvar newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tvar newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\n\t\treturn newGeometry;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tvar cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tvar geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar meshDef = json.meshes[ meshIndex ];\n\t\tvar primitives = meshDef.primitives;\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\n\t\t\tvar geometries = results[ results.length - 1 ];\n\n\t\t\tvar meshes = [];\n\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tvar material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See .markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = meshDef.name || ( 'mesh_' + meshIndex );\n\n\t\t\t\tif ( geometries.length > 1 ) mesh.name += '_' + i;\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = cameraDef.name;\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = json.animations[ animationIndex ];\n\n\t\tvar pendingNodes = [];\n\t\tvar pendingInputAccessors = [];\n\t\tvar pendingOutputAccessors = [];\n\t\tvar pendingSamplers = [];\n\t\tvar pendingTargets = [];\n\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tvar target = channel.target;\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar nodes = dependencies[ 0 ];\n\t\t\tvar inputAccessors = dependencies[ 1 ];\n\t\t\tvar outputAccessors = dependencies[ 2 ];\n\t\t\tvar samplers = dependencies[ 3 ];\n\t\t\tvar targets = dependencies[ 4 ];\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tvar node = nodes[ i ];\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\n\t\t\t\tvar sampler = samplers[ i ];\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tvar targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tvar outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tvar scale;\n\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 127;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 255;\n\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 32767;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 65535;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar parser = this;\n\n\t\tvar meshReferences = json.meshReferences;\n\t\tvar meshUses = json.meshUses;\n\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\n\t\treturn ( function () {\n\n\t\t\tvar pending = [];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\t\t\tvar node;\n\n\t\t\t\t\tif ( meshReferences[ nodeDef.mesh ] > 1 ) {\n\n\t\t\t\t\t\tvar instanceNum = meshUses[ nodeDef.mesh ] ++;\n\n\t\t\t\t\t\tnode = mesh.clone();\n\t\t\t\t\t\tnode.name += '_instance_' + instanceNum;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnode = mesh;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'light', nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See .markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = PropertyBinding.sanitizeNodeName( nodeDef.name );\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.associations.set( node, { type: 'nodes', index: nodeIndex } );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\n\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t\t\t// build skeleton here as well\n\n\t\t\t\tvar skinEntry;\n\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\t\t\tskinEntry = skin;\n\n\t\t\t\t\tvar pendingJoints = [];\n\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pendingJoints );\n\n\t\t\t\t} ).then( function ( jointNodes ) {\n\n\t\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\n\n\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\n\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( node ) {\n\n\t\t\t\t// build node hierachy\n\n\t\t\t\tparentObject.add( node );\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\t\t\tvar parser = this;\n\n\t\t\t// Loader returns Group, not Scene.\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\t\tvar scene = new Group();\n\t\t\tif ( sceneDef.name ) scene.name = sceneDef.name;\n\n\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\nexport { GLTFLoader };\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread({}, defaultOptions, {}, options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread({}, componentsInitialProps, {}, i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.5.2';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = [...b64ch];\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));\nconst _mkUriSafe = (src) => src\n .replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_')\n .replace(/=+$/m, '');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a), c => c.charCodeAt(0));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","export class Bounds {\n readonly top: number;\n readonly left: number;\n readonly width: number;\n readonly height: number;\n\n constructor(x: number, y: number, w: number, h: number) {\n this.left = x;\n this.top = y;\n this.width = w;\n this.height = h;\n }\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(clientRect: ClientRect): Bounds {\n return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n }\n}\n\nexport const parseBounds = (node: Element): Bounds => {\n return Bounds.fromClientRect(node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string) {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(fromCodePoint(...digits.map(digit => (digit === QUESTION_MARK ? ZERO : digit))), 16);\n const end = parseInt(fromCodePoint(...digits.map(digit => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n let codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 60000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n let repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n let c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n let unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end))\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","/* @flow */\n'use strict';\n\nimport {createTrieFromBase64} from './Trie';\nimport {base64} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indicies: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indicies.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indicies.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indicies.push(indicies[index - 1]);\n return types.push(prev);\n }\n indicies.push(index);\n return types.push(AL);\n }\n\n indicies.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indicies, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n) => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.\n if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number) => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indicies, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indicies, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (\n codePoints: number[],\n options?: IOptions\n): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(type => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","export const base64 =\n 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n let value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue) => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue) =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach(token => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n let [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number) => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map(ident => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color) => (0xff & color) === 0;\n\nexport const asString = (color: Color) => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {CSSValue} from './syntax/parser';\nimport {CSSTypes} from './types/index';\n\nexport enum PropertyDescriptorParsingType {\n VALUE,\n LIST,\n IDENT_VALUE,\n TYPE_VALUE,\n TOKEN_VALUE\n}\n\nexport interface IPropertyDescriptor {\n name: string;\n type: PropertyDescriptorParsingType;\n initialValue: string;\n prefix: boolean;\n}\n\nexport interface IPropertyIdentValueDescriptor extends IPropertyDescriptor {\n type: PropertyDescriptorParsingType.IDENT_VALUE;\n parse: (token: string) => T;\n}\n\nexport interface IPropertyTypeValueDescriptor extends IPropertyDescriptor {\n type: PropertyDescriptorParsingType.TYPE_VALUE;\n format: CSSTypes;\n}\n\nexport interface IPropertyValueDescriptor extends IPropertyDescriptor {\n type: PropertyDescriptorParsingType.VALUE;\n parse: (token: CSSValue) => T;\n}\n\nexport interface IPropertyListDescriptor extends IPropertyDescriptor {\n type: PropertyDescriptorParsingType.LIST;\n parse: (tokens: CSSValue[]) => T;\n}\n\nexport interface IPropertyTokenValueDescriptor extends IPropertyDescriptor {\n type: PropertyDescriptorParsingType.TOKEN_VALUE;\n}\n\nexport type CSSPropertyDescriptor =\n | IPropertyValueDescriptor\n | IPropertyListDescriptor\n | IPropertyIdentValueDescriptor\n | IPropertyTypeValueDescriptor\n | IPropertyTokenValueDescriptor;\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nexport enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): BackgroundClip => {\n return tokens.map(token => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {CacheStorage} from '../../core/cache-storage';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\n\nexport enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n CacheStorage.getInstance().addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(value.values);\n }\n\n throw new Error(`Unsupported image type`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue) {\n return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name];\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\n\nexport const parseColorStop = (args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [[0, 0], [0, height], [width, 0], [width, height]];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\n\nexport const prefixLinearGradient = (tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","const testRangeBounds = (document: Document) => {\n const TEST_HEIGHT = 123;\n\n if (document.createRange) {\n const range = document.createRange();\n if (range.getBoundingClientRect) {\n const testElement = document.createElement('boundtest');\n testElement.style.height = `${TEST_HEIGHT}px`;\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n const rangeBounds = range.getBoundingClientRect();\n const rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n\n img.src = `data:image/svg+xml,`;\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise => {\n const canvas = document.createElement('canvas');\n const size = 100;\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n const img = new Image();\n const greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n const svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return loadSerializedSVG(svg)\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n const data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n const node = document.createElement('div');\n node.style.backgroundImage = `url(${greenImageSrc})`;\n node.style.height = `${size}px`;\n // Firefox 55 does not render inline tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (width: number, height: number, x: number, y: number, node: Node) => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS() {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value});\n return value;\n },\n get SUPPORT_SVG_DRAWING() {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value});\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value});\n return value;\n },\n get SUPPORT_CORS_IMAGES() {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value});\n return value;\n },\n get SUPPORT_RESPONSE_TYPE() {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value});\n return value;\n },\n get SUPPORT_CORS_XHR() {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value});\n return value;\n }\n};\n","export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: {[key: string]: Logger} = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({id, enabled}: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: any) {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n static create(options: LoggerOptions) {\n Logger.instances[options.id] = new Logger(options);\n }\n\n static destroy(id: string) {\n delete Logger.instances[id];\n }\n\n static getInstance(id: string): Logger {\n const instance = Logger.instances[id];\n if (typeof instance === 'undefined') {\n throw new Error(`No logger instance found with id ${id}`);\n }\n return instance;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: any) {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: any) {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n","import {FEATURES} from './features';\nimport {Logger} from './logger';\n\nexport class CacheStorage {\n private static _caches: {[key: string]: Cache} = {};\n private static _link?: HTMLAnchorElement;\n private static _origin: string = 'about:blank';\n private static _current: Cache | null = null;\n\n static create(name: string, options: ResourceOptions): Cache {\n return (CacheStorage._caches[name] = new Cache(name, options));\n }\n\n static destroy(name: string): void {\n delete CacheStorage._caches[name];\n }\n\n static open(name: string): Cache {\n const cache = CacheStorage._caches[name];\n if (typeof cache !== 'undefined') {\n return cache;\n }\n\n throw new Error(`Cache with key \"${name}\" not found`);\n }\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window) {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n\n static getInstance(): Cache {\n const current = CacheStorage._current;\n if (current === null) {\n throw new Error(`No cache instance attached`);\n }\n return current;\n }\n\n static attachInstance(cache: Cache) {\n CacheStorage._current = cache;\n }\n\n static detachInstance() {\n CacheStorage._current = null;\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: {[key: string]: Promise};\n private readonly _options: ResourceOptions;\n private readonly id: string;\n\n constructor(id: string, options: ResourceOptions) {\n this.id = id;\n this._options = options;\n this._cache = {};\n }\n\n addImage(src: string): Promise {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n this._cache[src] = this.loadImage(src);\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !useProxy && !useCORS) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n Logger.getInstance(this.id).debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', e => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n xhr.open('GET', `${proxy}?url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\n\nexport const prefixRadialGradient = (tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map(values =>\n values\n .filter(isIdentToken)\n .map(token => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\n\nexport const linearGradient = (tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\n\nexport const webkitGradient = (tokens: CSSValue[]): CSSLinearGradientImage | CSSRadialGradientImage => {\n let angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens.filter(value => nonFunctionArgSeparator(value) && isSupportedImage(value)).map(image.parse);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map(token => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map(values => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): BorderRadius => parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nexport enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n AUTO = 3\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map(overflow => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter(arg => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter(arg => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map(token => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter(line => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach(token => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map(result => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map(token => token.value);\n }\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode\n} from './node-parser';\nimport {Logger} from '../core/logger';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\n\nexport interface CloneOptions {\n id: string;\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document) => void;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly options: CloneConfigurations;\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(element: HTMLElement, options: CloneConfigurations) {\n this.options = options;\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline