{"version":3,"sources":["../webpack/bootstrap","../external \"React\"","../node_modules/three/build/three.module.js","../../../src/index.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/prop-types/index.js","../node_modules/reactcss/lib/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/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../../src/globals.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/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.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/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/use-asset/dist/index.js","../node_modules/react-three-fiber/web.js","Animated.ts","AnimatedValue.ts","AnimatedString.ts","context.ts","AnimatedObject.ts","AnimatedArray.ts","AnimatedProps.ts","withAnimated.tsx","createHost.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/lodash-es/_root.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/nonIterableSpread.js","../../src/constants.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/isStaticRules.js","../../src/models/Keyframes.js","../../src/models/StyledComponent.js","../../src/models/GlobalStyle.js","../../src/models/ServerStyleSheet.js","applyAnimatedValues.ts","AnimatedStyle.ts","index.ts","primitives.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/react/jsx-runtime.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/lodash/isArray.js","../node_modules/lodash/_root.js","../node_modules/lodash/isObjectLike.js","AnimationConfig.ts","constants.ts","Animation.ts","helpers.ts","scheduleProps.ts","AnimationResult.ts","runAsync.ts","FrameValue.ts","SpringPhase.ts","SpringValue.ts","Controller.ts","SpringContext.tsx","SpringHandle.ts","hooks/useSprings.ts","hooks/useSpring.ts","TransitionPhase.ts","hooks/useTransition.tsx","Interpolation.ts","interpolate.ts","globals.ts","../node_modules/react-layout-effect/dist/esm/useLayoutEffect.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../src/helpers.ts","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_getNative.js","../external \"ReactDOM\"","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash/isObject.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/tslib/tslib.es6.js","../../../src/colorMatchers.ts","../../../src/normalizeColor.ts","../../../src/colorToRgba.ts","../../../src/stringInterpolation.ts","../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/lodash/_Symbol.js","../node_modules/lodash/keys.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/scheduler/index.js","../node_modules/react-use-measure/dist/web.js","../node_modules/tinycolor2/tinycolor.js","../node_modules/fast-deep-equal/index.js","../node_modules/webpack/buildin/module.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_copyObject.js","../node_modules/webpack/buildin/harmony-module.js","../../../src/FrameLoop.ts","../../../src/createInterpolator.ts","../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/nonIterableRest.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/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../src/colors.ts","../node_modules/lodash-es/_freeGlobal.js","../../src/index.tsx","../node_modules/react-is/index.js","../node_modules/lodash/forOwn.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/eq.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/_cloneArrayBuffer.js","../../../src/deprecations.ts","../node_modules/use-memo-one/dist/use-memo-one.esm.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/debounce/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/object-assign/index.js","../node_modules/process/browser.js","../../../src/types.util.ts","../../../src/hooks.ts","../node_modules/lodash/_freeGlobal.js","../node_modules/webpack/buildin/global.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/identity.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/@icons/material/UnfoldMoreHorizontalIcon.js","../node_modules/@icons/material/CheckIcon.js","../node_modules/react-three-fiber/node_modules/react-reconciler/index.js","../node_modules/tiny-emitter/index.js","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/reactcss/lib/flattenNames.js","../node_modules/lodash/isString.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_castFunction.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/map.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/get.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_createBaseEach.js","../node_modules/reactcss/lib/mergeClasses.js","../node_modules/lodash/cloneDeep.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/isMap.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/isSet.js","../node_modules/lodash/_baseIsSet.js","../node_modules/reactcss/lib/autoprefix.js","../node_modules/reactcss/lib/components/hover.js","../node_modules/reactcss/lib/components/active.js","../node_modules/reactcss/lib/loop.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-three-fiber/node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../node_modules/three/examples/jsm/libs/motion-controllers.module.js","../node_modules/three/examples/jsm/webxr/XRControllerModelFactory.js","../node_modules/three/examples/jsm/webxr/ARButton.js","../node_modules/three/examples/jsm/webxr/XRHandPrimitiveModel.js","../node_modules/three/examples/jsm/libs/fflate.module.min.js","../node_modules/three/examples/jsm/curves/NURBSUtils.js","../node_modules/three/examples/jsm/curves/NURBSCurve.js","../node_modules/three/examples/jsm/loaders/FBXLoader.js","../node_modules/three/examples/jsm/webxr/XRHandOculusMeshModel.js","../node_modules/three/examples/jsm/webxr/XRHandModelFactory.js","../node_modules/@react-three/xr/dist/index.js","../node_modules/@react-three/drei/web/Html.js","../node_modules/zustand/index.js","../node_modules/@react-three/drei/core/useProgress.js","../node_modules/@react-three/drei/web/Loader.js","reportWebVitals.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../../src/utils/math.ts","../../src/utils/utils.ts","../../src/utils/state.ts","../../src/utils/event.ts","../../src/Controller.ts","../../src/hooks/useRecognizers.ts","../../src/recognizers/Recognizer.ts","../../src/recognizers/CoordinatesRecognizer.ts","../../src/recognizers/DragRecognizer.ts","../../src/utils/config.ts","../../src/hooks/useDrag.ts","../node_modules/react-color/es/helpers/alpha.js","../node_modules/react-color/es/helpers/checkboard.js","../node_modules/react-color/es/components/common/Checkboard.js","../node_modules/react-color/es/components/common/Alpha.js","../node_modules/react-color/es/components/common/EditableInput.js","../node_modules/react-color/es/helpers/hue.js","../node_modules/react-color/es/components/common/Hue.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignMergeValue.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_baseFor.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/isArrayLikeObject.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_safeGet.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/toPlainObject.js","../node_modules/lodash-es/_baseMergeDeep.js","../node_modules/lodash-es/_baseMerge.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/_overRest.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_baseSetToString.js","../node_modules/lodash-es/_shortOut.js","../node_modules/lodash-es/_setToString.js","../node_modules/lodash-es/_baseRest.js","../node_modules/lodash-es/_isIterateeCall.js","../node_modules/lodash-es/_createAssigner.js","../node_modules/lodash-es/merge.js","../node_modules/react-color/es/components/common/Raised.js","../node_modules/lodash-es/now.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/debounce.js","../node_modules/lodash-es/throttle.js","../node_modules/react-color/es/components/common/Saturation.js","../node_modules/react-color/es/helpers/saturation.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_createBaseEach.js","../node_modules/lodash-es/_baseEach.js","../node_modules/lodash-es/_baseForOwn.js","../node_modules/lodash-es/_castFunction.js","../node_modules/lodash-es/forEach.js","../node_modules/react-color/es/helpers/color.js","../node_modules/react-color/es/components/common/ColorWrap.js","../node_modules/react-color/es/helpers/interaction.js","../node_modules/react-color/es/components/common/Swatch.js","../node_modules/react-color/es/components/alpha/AlphaPointer.js","../node_modules/react-color/es/components/alpha/Alpha.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/_baseIsMatch.js","../node_modules/lodash-es/_isStrictComparable.js","../node_modules/lodash-es/_getMatchData.js","../node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/lodash-es/_baseMatches.js","../node_modules/lodash-es/_isKey.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/_castPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseGet.js","../node_modules/lodash-es/get.js","../node_modules/lodash-es/_baseHasIn.js","../node_modules/lodash-es/_hasPath.js","../node_modules/lodash-es/hasIn.js","../node_modules/lodash-es/_baseMatchesProperty.js","../node_modules/lodash-es/_baseProperty.js","../node_modules/lodash-es/_basePropertyDeep.js","../node_modules/lodash-es/property.js","../node_modules/lodash-es/_baseIteratee.js","../node_modules/lodash-es/_baseMap.js","../node_modules/lodash-es/map.js","../node_modules/react-color/es/components/block/BlockSwatches.js","../node_modules/react-color/es/components/block/Block.js","../node_modules/material-colors/dist/colors.es2015.js","../node_modules/react-color/es/components/circle/CircleSwatch.js","../node_modules/react-color/es/components/circle/Circle.js","../node_modules/lodash-es/isUndefined.js","../node_modules/react-color/es/components/chrome/ChromeFields.js","../node_modules/react-color/es/components/chrome/ChromePointer.js","../node_modules/react-color/es/components/chrome/ChromePointerCircle.js","../node_modules/react-color/es/components/chrome/Chrome.js","../node_modules/react-color/es/components/compact/CompactColor.js","../node_modules/react-color/es/components/compact/CompactFields.js","../node_modules/react-color/es/components/compact/Compact.js","../node_modules/react-color/es/components/github/GithubSwatch.js","../node_modules/react-color/es/components/github/Github.js","../node_modules/react-color/es/components/hue/HuePointer.js","../node_modules/react-color/es/components/hue/Hue.js","../node_modules/react-color/es/components/material/Material.js","../node_modules/react-color/es/components/photoshop/PhotoshopFields.js","../node_modules/react-color/es/components/photoshop/PhotoshopPointerCircle.js","../node_modules/react-color/es/components/photoshop/PhotoshopPointer.js","../node_modules/react-color/es/components/photoshop/PhotoshopButton.js","../node_modules/react-color/es/components/photoshop/PhotoshopPreviews.js","../node_modules/react-color/es/components/photoshop/Photoshop.js","../node_modules/react-color/es/components/sketch/SketchFields.js","../node_modules/react-color/es/components/sketch/SketchPresetColors.js","../node_modules/react-color/es/components/sketch/Sketch.js","../node_modules/react-color/es/components/slider/SliderSwatch.js","../node_modules/react-color/es/components/slider/SliderSwatches.js","../node_modules/react-color/es/components/slider/SliderPointer.js","../node_modules/react-color/es/components/slider/Slider.js","../node_modules/react-color/es/components/swatches/SwatchesColor.js","../node_modules/react-color/es/components/swatches/SwatchesGroup.js","../node_modules/react-color/es/components/swatches/Swatches.js","../node_modules/react-color/es/components/twitter/Twitter.js","../node_modules/react-color/es/components/google/GooglePointerCircle.js","../node_modules/react-color/es/components/google/GooglePointer.js","../node_modules/react-color/es/components/google/GoogleFields.js","../node_modules/react-color/es/components/google/Google.js","../../src/contexts/controls-context.ts","../../src/components/controls-provider.tsx","../../src/types.ts","../../src/utils.ts","../../src/hooks/use-local-storage.ts","../../src/components/controls/base-control.tsx","../../src/components/controls/number-control.tsx","../../src/components/controls/boolean-control.tsx","../../src/components/controls/button-control.tsx","../../src/components/controls/color-control.tsx","../../src/components/controls/select-control.tsx","../../src/components/controls/string-control.tsx","../../src/components/controls/xy-pad-control.tsx","../../src/components/controls/file-control.tsx","../../src/components/control-item.tsx","../../src/components/control-group.tsx","../../src/components/controls.tsx","index.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","0","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","this","oldJsonpFunction","slice","s","React","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","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","GLSL1","GLSL3","EventDispatcher","assign","addEventListener","listener","_listeners","listeners","indexOf","hasEventListener","removeEventListener","listenerArray","index","splice","dispatchEvent","array","_lut","toString","_canvas","_seed","MathUtils","DEG2RAD","Math","PI","RAD2DEG","generateUUID","d0","random","d1","d2","d3","toUpperCase","clamp","min","max","euclideanModulo","mapLinear","x","a1","a2","b1","b2","lerp","y","damp","lambda","dt","exp","pingpong","abs","smoothstep","smootherstep","randInt","low","high","floor","randFloat","randFloatSpread","range","seededRandom","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","pow","ceil","log","LN2","floorPowerOfTwo","setQuaternionFromProperEuler","q","a","b","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","set","warn","Vector2","scalar","constructor","v","w","addVectors","subVectors","multiplyScalar","elements","minVal","maxVal","divideScalar","round","sqrt","angle","atan2","distanceToSquared","dx","dy","normalize","alpha","v1","v2","offset","attribute","getX","getY","center","Matrix3","arguments","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","fromArray","me","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","copy","invert","transpose","tx","ty","sx","sy","rotation","cx","cy","theta","matrix","ImageUtils","getDataURL","image","test","HTMLCanvasElement","canvas","createElementNS","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","DEFAULT_IMAGE","mapping","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","uuid","mipmaps","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","serializeImage","HTMLImageElement","ImageBitmap","Array","isTexture","updateMatrix","setUvTransform","clone","source","toJSON","meta","isRootObject","textures","output","metadata","generator","wrap","images","url","isArray","isDataTexture","dispose","transformUv","uv","applyMatrix3","Vector4","z","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getZ","getW","WebGLRenderTarget","options","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","Quaternion","_x","_y","_z","_w","_onChangeCallback","quaternion","euler","update","isEuler","_order","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","dot","step","angleTo","slerp","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","Number","EPSILON","sinHalfTheta","halfTheta","ratioA","ratioB","callback","qa","qm","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","Vector3","multiplyVectors","applyQuaternion","_quaternion","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector","projectOnVector","sub","normal","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","Box3","Infinity","minX","minY","minZ","maxX","maxY","maxZ","count","points","makeEmpty","il","expandByPoint","size","halfSize","_vector$1","add","expandByObject","box","isEmpty","point","vector","addScalar","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","_box","union","children","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0","_v1","_v2","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","getSize","_points","setFromPoints","equals","v0","extents","j","_testAxis","p0","p1","p2","_box$1","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","_vector$2","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","origin","direction","ray","at","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","sign","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$1","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","isVector3","t14","scaleXSq","scaleYSq","scaleZSq","position","scale","x2","y2","z2","wx","wy","wz","determinant","_m1","invSX","invSY","invSZ","setFromRotationMatrix","left","right","top","bottom","near","far","Euler","DefaultOrder","asin","_matrix","makeRotationFromQuaternion","newOrder","_quaternion$1","setFromQuaternion","optionalResult","RotationOrders","Layers","mask","channel","layers","_object3DId","_v1$2","_q1","_m1$1","_target","_position","_scale","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","parent","DefaultUp","_onChange","defineProperties","configurable","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","animations","userData","isObject3D","onBeforeRender","onAfterRender","premultiply","decompose","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","multiply","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","distance","translateX","translateY","translateZ","localToWorld","worldToLocal","lookAt","setFromMatrixPosition","isCamera","isLight","extractRotation","remove","clear","attach","getObjectById","id","getObjectByProperty","getObjectByName","getWorldPosition","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverse","traverseVisible","traverseAncestors","updateMatrixWorld","force","updateParents","updateChildren","geometries","materials","shapes","skeletons","serialize","library","element","JSON","stringify","toArray","isInstancedMesh","instanceMatrix","isMesh","isLine","isPoints","parameters","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","animation","extractFromCache","cache","values","recursive","parse","child","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","negate","line","delta","start","startSign","endSign","end","intersectsPlane","optionalNormalMatrix","getNormalMatrix","referencePoint","coplanarPoint","_v0$1","_v1$3","_v2$1","_v3","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","i0","i1","i2","getNormal","setFromCoplanarPoints","getBarycoord","uv1","uv2","uv3","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","addScaledVector","d5","d6","vb","va","denom","targetLengthSq","dot00","dot01","dot02","dot11","dot12","invDenom","u","p3","_colorKeywords","_hslA","_hslB","hue2rgb","SRGBToLinear","LinearToSRGB","Color","setRGB","isColor","setHex","setStyle","hex","style","handleAlpha","string","parseFloat","exec","color","components","parseInt","setHSL","charAt","setColorName","gammaFactor","safeInverse","copyGammaToLinear","copyLinearToGamma","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","getHSL","color1","color2","normalized","NAMES","Face3","materialIndex","vertexNormals","vertexColors","materialId","Material","fog","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","TypeError","usage","updateRange","Int8BufferAttribute","Int8Array","Uint8BufferAttribute","Uint8Array","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Int16Array","Uint16BufferAttribute","Uint16Array","Int32BufferAttribute","Int32Array","Uint32BufferAttribute","Uint32Array","Float16BufferAttribute","Float32BufferAttribute","Float32Array","Float64BufferAttribute","Float64Array","arrayMax","isBufferAttribute","onUploadCallback","setUsage","copyAt","index1","index2","copyArray","copyColorsArray","colors","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","fromBufferAttribute","setXY","setXYZ","applyNormalMatrix","setX","setY","setZ","setW","setXYZW","onUpload","isFloat16BufferAttribute","TYPED_ARRAYS","getTypedArray","buffer","_id","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$4","BufferGeometry","attributes","morphAttributes","morphTargetsRelative","groups","boundingSphere","drawRange","isBufferGeometry","getIndex","setIndex","getAttribute","deleteAttribute","hasAttribute","addGroup","clearGroups","setDrawRange","needsUpdate","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","translate","makeTranslation","makeScale","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","isNaN","jl","computeFaceNormals","computeTangents","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","group","handleTriangle","tmp2","n2","handleVertex","isFinite","computeVertexNormals","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","normalizeNormals","merge","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","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","checkBufferGeometryIntersection","raycaster","morphPosition","morphInfluences","morphTargetInfluences","influence","boneTransform","intersection","intersectTriangle","checkIntersection","face","morphTargetDictionary","ml","String","intersects","intersectsBox","groupMaterial","faceIndex","isGeometry","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","isMatrix3","isMatrix4","isVector2","isVector4","mergeUniforms","uniforms","merged","UniformsUtils","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","isShaderMaterial","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","enabled","offsetX","offsetY","clearViewOffset","skew","makePerspective","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","render","CubeTexture","_needsFlipEnvMap","isCubeTexture","WebGLCubeRenderTarget","dummy","isInteger","shader","tEquirect","mesh","currentMinFilter","stencil","DataTexture","_sphere$1","_vector$5","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","requestAnimationFrame","stop","cancelAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","isInterleavedBufferAttribute","deleteBuffer","delete","bufferType","cached","bytesPerElement","elementSize","createBuffer","bindBuffer","bufferData","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","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","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_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","transmissionmap_fragment","transmissionmap_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","UniformsLib","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","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","background","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","isScene","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","copyPosition","toneMapping","unshift","WebGLBindingStates","maxVertexAttributes","getParameter","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","attributesNum","cachedAttribute","geometryAttribute","saveCache","isInstancedBufferGeometry","programAttributes","getAttributes","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","_maxInstanceCount","isInstancedBufferAttribute","instanceColor","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","info","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","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","onTextureDispose","cubemap","has","currentRenderList","getRenderList","fromEquirectangularTexture","setRenderList","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","workInfluences","objectInfluences","influences","sort","MAX_SAFE_INTEGER","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","WebGLObjects","updateMap","onInstancedMeshDispose","instancedMesh","buffergeometry","DataTexture2DArray","wrapR","DataTexture3D","physical","transmission","transmissionMap","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","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getShaderErrors","status","getShaderParameter","getShaderInfoLog","trim","split","join","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","versionString","isRawShaderMaterial","shaderName","instancing","instancingColor","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexUvs","uvsVertexOnly","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","lightMapEncoding","outputEncoding","depthPacking","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","isWebGLRenderTarget","getParameters","shadows","environment","isMeshStandardMaterial","bones","nVertexUniforms","nVertexMatrices","getMaxBones","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","list","cameras","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","hash","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","setupLights","setupLightsView","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","renderCallDepth","isMeshDepthMaterial","isMeshDistanceMaterial","WebGLShadowMap","_renderer","_objects","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterials","_distanceMaterials","_materialCache","1","2","shadowMaterialVertical","SAMPLE_RATE","HALF_SAMPLE_RATE","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","mapPass","renderBufferDirect","getDepthMaterialVariant","useMorphing","useSkinning","useInstancing","getDistanceMaterialVariant","getDepthMaterial","result","getMaterialVariant","customMaterial","customDepthMaterial","customDistanceMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","k","kl","depthMaterial","autoUpdate","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","enable","disable","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","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","LOG2E","getInternalFormat","internalFormatName","glFormat","glType","filterFallback","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","uploadCubeTexture","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","isWebGLMultisampleRenderTarget","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","_hand","WebXRManager","framebufferScaleFactor","referenceSpace","referenceSpaceType","pose","controllers","inputSourcesMap","Map","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","inputSource","onSessionEnd","forEach","disconnect","setFramebuffer","isPresenting","onInputSourcesChange","inputSources","removed","added","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","setSession","getContextAttributes","xrCompatible","makeXRCompatible","layerInit","antialias","baseLayer","XRWebGLLayer","updateRenderState","requestReferenceSpace","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","display","createCanvasElement","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderState","renderStateStack","domElement","sortObjects","toneMappingExposure","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","initGLContext","preventDefault","onMaterialDispose","releaseMaterialProgramReference","deallocateMaterial","programInfo","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","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","intersectsSprite","isImmediateRenderObject","renderObjects","isArrayCamera","camera2","renderObjectImmediate","lightsStateVersion","programCacheKey","programChange","needsLights","materialNeedsLights","progUniforms","uniformsList","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","isOrthographicCamera","boneTexture","boneMatrices","boneTextureSize","window","setFromProjectionMatrix","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","halfFloatSupportedByExt","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","resetState","__THREE_DEVTOOLS__","CustomEvent","detail","WebGL1Renderer","joints","inputState","pinching","inputPose","gripPose","handPose","targetRay","grip","hand","visibilityState","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","handedness","getPose","targetRaySpace","gripSpace","FogExp2","Fog","Scene","InterleavedBuffer","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","setFromMatrixScale","intersect","_v1$4","_v2$2","LOD","_currentLevel","levels","addLevel","getCurrentLevel","getObjectForDistance","_basePosition","_skinIndex","_skinWeight","_vector$7","_matrix$1","SkinnedMesh","bindMatrixInverse","Bone","calculateInverses","normalizeSkinWeights","skinWeight","manhattanLength","skinIndex","weight","getComponent","boneIndex","boneInverses","isBone","_offsetMatrix","_identityMatrix","Skeleton","inverse","bone","getBoneByName","fromJSON","json","boneInverse","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","linecap","linejoin","getColorAt","getMatrixAt","raycastTimes","instanceId","setColorAt","setMatrixAt","_start","_end","_inverseMatrix$1","_ray$1","_sphere$2","Line","computeLineDistances","lineDistances","threshold","params","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distanceSqToSegment","_start$1","_end$1","LineSegments","LineLoop","_inverseMatrix$2","_ray$2","_sphere$3","_position$1","Points","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","video","requestVideoFrameCallback","updateVideo","CompressedTexture","CanvasTexture","DepthTexture","readyState","HAVE_CURRENT_DATA","isCanvasTexture","CircleGeometry","segments","thetaStart","thetaLength","vertex","segment","CylinderGeometry","radiusTop","radiusBottom","radialSegments","openEnded","indexArray","generateTorso","slope","indexRow","sinTheta","cosTheta","generateCap","centerIndexStart","centerIndexEnd","ConeGeometry","PolyhedronGeometry","vertexBuffer","uvBuffer","subdivide","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","applyRadius","generateUVs","azimuth","inclination","correctUVs","correctSeam","centroid","azi","correctUV","DodecahedronGeometry","_v0$2","_v1$5","_normal$1","_triangle","EdgesGeometry","thresholdAngle","thresholdDot","indexAttr","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","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","faces","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","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","binormals","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","IcosahedronGeometry","LatheGeometry","phiStart","phiLength","inverseSegments","base","n1","OctahedronGeometry","ParametricGeometry","func","slices","stacks","EPS","pu","pv","sliceCount","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","radiusStep","thetaSegmentLevel","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","toJSON$1","SphereGeometry","thetaEnd","grid","verticesRow","uOffset","TetrahedronGeometry","TextGeometry","text","font","isFont","generateShapes","TorusGeometry","tube","tubularSegments","arc","TorusKnotGeometry","P1","P2","B","T","N","calculatePositionOnCurve","cu","su","quOverP","cs","TubeGeometry","closed","frames","P","generateBufferData","generateSegment","generateIndices","getPointAt","WireframeGeometry","edge","edges","ol","edge1","edge2","Geometries","freeze","__proto__","BoxBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","ExtrudeBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","ParametricBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","ShapeBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TextBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","RawShaderMaterial","ior","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","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","evaluate","resultBuffer","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","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","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","slerpFlat","jsonTracks","frameTime","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","CreateClipsFromMorphTargetSequences","animationToMorphTargets","pattern","morphTarget","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","withCredentials","resourcePath","requestHeader","load","loadAsync","setCrossOrigin","setWithCredentials","setPath","setResourcePath","setRequestHeader","loading","FileLoader","AnimationLoader","CompressedTextureLoader","ImageLoader","CubeTextureLoader","DataTextureLoader","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","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","header","XMLHttpRequest","open","callbacks","overrideMimeType","send","setResponseType","setMimeType","loaded","loadTexture","texDatas","mipmapCount","isCubemap","onImageLoad","onImageError","substr","urls","texData","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","makeRotationAxis","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","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","diff","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","makeOrthographic","isDirectionalLightShadow","SphericalHarmonics3","coeff","shBasis","LightProbe","MaterialLoader","getTexture","shading","setTextures","LoaderUtils","decodeText","TextDecoder","decode","fromCharCode","escape","extractUrlBase","lastIndexOf","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","arrayBuffer","getArrayBuffer","typedArray","bufferAttribute","drawcalls","offsets","ObjectLoader","parseAnimations","parseShapes","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseSkeletons","bindSkeletons","hasImages","geometryShapes","bufferGeometryLoader","details","deserializeImage","loadImage","deserializedImage","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","objectAnimations","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","isImageBitmapLoader","setOptions","fetchOptions","credentials","then","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","Font","paths","createPaths","chars","line_height","yMax","yMin","underlineThickness","char","ret","createPath","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","familyName","FontLoader","substring","AudioContext","webkitAudioContext","AudioLoader","HemisphereLightProbe","sky","ground","AmbientLightProbe","bufferCopy","decodeAudioData","audioBuffer","isHemisphereLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","eyeSep","_cache","xmin","xmax","eyeSepHalf","eyeSepOnProjection","ymax","Clock","autoStart","oldTime","elapsedTime","running","now","getElapsedTime","getDelta","newTime","performance","Date","_position$2","_quaternion$3","_scale$1","_orientation","AudioListener","gain","createGain","connect","destination","timeDelta","_clock","setTargetAtTime","currentTime","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setPosition","setOrientation","Audio","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","play","delay","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","getFilters","setFilters","_position$3","_quaternion$4","_scale$2","_orientation$1","PositionalAudio","panner","createPanner","panningModel","refDistance","rolloffFactor","distanceModel","maxDistance","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accumulate","accuIndex","currentWeight","mix","accumulateAdditive","weightAdditive","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","RegExp","_wordChar","_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","firstValidIndex","bindings","unbind","root","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","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","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","action","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","_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","_update","setTime","timeInSeconds","getRoot","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","Raycaster","PointCloud","ascSort","intersectObject","setBuffer","setType","setItemSize","setCount","setFromCamera","coords","unproject","intersectObjects","Spherical","other","setFromCartesianCoords","Cylindrical","_vector$8","Box2","_startP","_startEnd","Line3","clampToLine","startEnd2","closestPointToPointParameter","ImmediateRenderObject","_vector$9","SpotLightHelper","cone","coneLength","coneWidth","_vector$a","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","isSkeletonHelper","boneList","PointLightHelper","sphereSize","_vector$b","_color1","_color2","HemisphereLightHelper","GridHelper","PolarGridHelper","radials","circles","_v1$6","_v2$3","_v3$1","DirectionalLightHelper","lightPlane","targetLine","_vector$c","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_lineGeometry","_coneGeometry","_box$3","BoxHelper","setFromObject","Box3Helper","PlaneHelper","positions2","_axis","ArrowHelper","headLength","headWidth","setDirection","setLength","AxesHelper","_floatView","_int32View","DataUtils","toHalfFloat","val","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","LOD_MAX","MAX_SAMPLES","ENCODINGS","backgroundMaterial","backgroundBox","_flatCamera","_createPlanes","_lodPlanes","_sizeLods","_sigmas","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","convertLinearToRGBE","maxComponent","fExp","log2","PMREMGenerator","_pingPongRenderTarget","_blurMaterial","weights","poleAxis","_getBlurShader","_equirectShader","_cubemapShader","_compileMaterial","sigma","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapShader","_getEquirectShader","outputTarget","_setViewport","_textureToCubeUV","_isLDR","_createRenderTarget","tmpMesh","cubeCamera","upSign","forwardSign","originalAutoClear","useSolidColor","convertSRGBToLinear","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","outputSize","lod","sizeLod","texelSize","positionSize","uvSize","faceIndexSize","coordinates","fill","Face4","LineStrip","LinePieces","NoColors","FaceColors","VertexColors","MeshFaceMaterial","MultiMaterial","isMultiMaterial","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","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","Handlers","empty","isIntersectionBox","isIntersectionSphere","setFromMatrix","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","renderDepth","getWorldRotation","applyMatrix","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","transparency","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","materialIndexOffset","CanvasRenderer","JSONLoader","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","LensFlare","revision","__THREE__","_classCallCheck","instance","Constructor","require","ReactCSS","handleActive","handleHover","hover","_flattenNames2","_interopRequireDefault","_mergeClasses2","_autoprefix2","_hover3","_active2","_loop3","obj","default","classes","_len","activations","_key","activeNames","_defineProperties","props","descriptor","writable","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","Reflect","_extends","createStringInterpolator","frameLoop","colorNames","skipAnimation","batchedUpdates","willAdvance","globals","defined","_slicedToArray","arr","arrayWithHoles","iterator","_arr","_n","_d","_e","_s","_i","done","unsupportedIterableToArray","nonIterableRest","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","_defineProperty","_getPrototypeOf","setPrototypeOf","getPrototypeOf","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","_toArray","iterableToArray","globalCache","handleAsset","fn","args","lifespan","preload","entry","deepEqual","useAsset","useMemo","peek","_globalCache$find","roots","emptyObject","is","fun","str","und","equ","createSubs","subs","globalEffects","globalAfterEffects","globalTailEffects","addEffect","renderGl","timestamp","runGlobalEffects","clock","subscribers","ref","invalidateFrameloop","manual","renderLoop","containerInfo","__state","active","ready","invalidate","catalogue","extend","applyProps","newProps","oldProps","accumulative","__container","sameProps","startsWith","includes","leftOvers","toFilter","__instance","filteredProps","filteredPropsEntries","entries","_instance$__container","_instance$__container2","reduce","acc","isColorManagement","colorManagement","invalidateInstance","__handlers","__interaction","updateInstance","createInstance","hostContext","internalInstanceHandle","__dispose","THREE","return","stateNode","__objects","endsWith","parentInstance","attachArray","attachObject","insertBefore","beforeChild","restSiblings","sibling","removeRecursive","removeChild","unstable_runWithPriority","unstable_IdlePriority","switchInstance","fiber","newInstance","alternate","Renderer","Reconciler","unstable_now","warnsIfNotActing","supportsMutation","isPrimaryRenderer","scheduleTimeout","cancelTimeout","noTimeout","appendInitialChild","appendChildToContainer","removeChildFromContainer","insertInContainerBefore","commitUpdate","updatePayload","argsNew","restNew","argsOld","restOld","some","hideInstance","unhideInstance","hideTextInstance","getPublicInstance","getRootHostContext","getChildHostContext","createTextInstance","finalizeInitialChildren","commitMount","prepareUpdate","shouldDeprioritizeSubtree","prepareForCommit","preparePortalMount","resetAfterCommit","shouldSetTextContent","clearContainer","for","injectIntoDevTools","bundleType","findHostInstanceByFiber","rendererPackageName","def","makeId","eventObject","stateContext","createContext","useCanvas","orthographic","concurrent","updateDefaultCamera","noEvents","onCreated","onPointerMissed","forceResize","useState","setReady","mouse","defaultRaycaster","defaultScene","cam","defaultCam","setDefaultCamera","useRef","initialClick","initialHits","pointer","TinyEmitter","captured","events","subscribe","priority","_state$current","prepare","handlePointerMove","useCallback","sharedState","useLayoutEffect","devicePixelRatio","hovered","temp","prepareRay","nativeEvent","seen","Set","hits","eventsObjects","item","calculateDistance","handlePointerCancel","emit","hoveredObj","hit","intersections","pointerOut","pointerLeave","getIntersects","handleIntersects","unprojectedPoint","releasePointerCapture","localState","stopped","setPointerCapture","raycastEvent","stopPropagation","cap","higher","currentTarget","sourceEvent","pointerOver","pointerEnter","hoveredItem","pointerMove","handlePointer","pointerMissed","onClick","onContextMenu","onDoubleClick","onWheel","onPointerDown","onPointerUp","onPointerLeave","onPointerMove","onGotPointerCaptureLegacy","onLostPointerCapture","Canvas","activate","useEffect","newRoot","createContainer","updateContainer","getPublicRootInstance","Provider","unmountComponentAtNode","_handlers$pointerMis","_handlers","useContext","useContext$1","useFrame","renderPriority","unsubscribe","useThree","buildGraph","nodes","loadingFn","Proto","input","_error$message","useLoader","defaultStyles","overflow","Content","setEvents","effects","ResizeContainer","memo","webgl1","preRender","resize","restSpread","containerRef","useMeasure","scroll","debounce","readyFlag","mergeRefs","canvasRef","$node","getAnimated","owner","setAnimated","defineHidden","getPayload","payload","_value","lastPosition","lastVelocity","_string","_toString","createInterpolator","TreeContext","each","config","getFluidConfig","isAnimatedString","dirty","createAnimatedStyle","onParentChange","G","withAnimated","forwardRef","instanceRef","hasInstance","Component","forceUpdate","useForceUpdate","host","dependencies","dep","updateRef","createHost","applyAnimatedValues","getComponentProps","hostConfig","animated","displayName","getDisplayName","arg","receiver","desc","freeSelf","self","freeGlobal","Function","_toConsumableArray","arrayLikeToArray","insertRule","names","isCustomPropRE","isUnitlessNumber","attributeCache","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","prefixKey","domTransforms","pxTransforms","degTransforms","addUnit","isValueIdentity","inputs","transforms","xyz","_children","arg1","getFluidValue","addChild","Globals","unstable_batchedUpdates","isFilterElement","scrollLeft","dangerousStyleValue","scrollTop","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_assertThisInitialized","ReferenceError","_objectWithoutPropertiesLoose","_createForOfIteratorHelper","allowArrayLike","it","F","normalCompletion","didErr","_e2","defaults","friction","mass","damping","easing","frequency","velocity","restVelocity","progress","bounce","isTensionConfig","emptyArray","useMemoOne","deps","matchProp","getProps","getDefaultProp","getDefaultProps","omitKeys","DEFAULT_PROPS","RESERVED_PROPS","pause","cancel","immediate","onDelayEnd","onProps","onChange","onRest","items","trail","expires","initial","enter","leave","callId","parentId","forward","getForwardProps","out","computeGoal","callProp","onResume","getCombinedResult","getCancelledResult","getNoopResult","getFinishedResult","noop","finished","cancelled","resume","asyncTo","prevPromise","defaultProps","bailPromise","preventBail","bail","bailIfEnded","bailSignal","bailResult","withBailHandler","animating","isFrameValue","nextId","interpolate","deprecateInterpolate","idle","CREATED","IDLE","ACTIVE","PAUSED","DISPOSED","_phase","pauseQueue","resumeQueue","_defaultProps","_lastCallId","_lastToId","advance","changed","anim","toValues","toConfig","elapsed","bounceFactor","canBounce","isGrowing","numSteps","isMoving","checkDisposed","flush","onPause","cancelAsync","nodeType","parentNode","mergeDefaultProp","isLoop","nextProps","createLoopUpdate","hasToProp","hasFromProp","prop","coerceEventProp","mergeDefaultProps","prevFrom","hasFromChanged","isEqual","hasToChanged","fromConfig","hasAsyncTo","sanitizeConfig","defaultConfig","newConfig","mergeConfig","goal","isAnimatable","goalType","started","hasValueChanged","onRestQueue","checkFinishedOnRest","onRestIndex","runAsync","oldValue","spring","loopRet","overrides","inferTo","createUpdate","findDefined","BATCHED_EVENTS","springs","_flush","_initialProps","_lastAsyncId","_active","_events","prepareKeys","flushUpdateQueue","isActive","flushUpdate","handler","ctrl","scheduleProps","hasDefaultProp","prepareSprings","createSpring","ctx","SpringContext","inherited","useSpringContext","SpringHandle","getControllers","propsFn","layoutId","ctrls","getSprings","setSprings","refProp","updates","prevLength","usePrev","disposed","declareUpdate","declareUpdates","api","useOnce","isFn","useSprings","MOUNT","ENTER","UPDATE","LEAVE","transitions","getKeys","usedTransitions","prevTransitions","reused","phase","changes","prevPhase","isLeave","expiry","expiryMs","useImperativeHandle","renderTransitions","elem","_unsupportedIterableToArray","minLen","getRawTag","objectToString","symToStringTag","baseIsNative","ReactDOM","freeExports","freeModule","Buffer","isBuffer","stubFalse","_setPrototypeOf","__assign","NUMBER","PERCENTAGE","rgb","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hslToRgb","C","M","R1","G1","B1","parse255","int","parse360","parse1","parsePercentage","colorToRgba","int32Color","normalizeColor","colorNamesRegex","numberRegex","colorRegex","rgbaRegex","rgbaRound","_","keyframes","interpolators","_typeof","_possibleConstructorReturn","assertThisInitialized","arrayLikeKeys","baseKeys","isArrayLike","_arrayLikeToArray","arr2","debounce$1","polyfill","ResizeObserver","bounds","scrollContainers","resizeObserver","lastBounds","scrollDebounce","resizeDebounce","mounted","getBoundingClientRect","areBoundsEqual","forceRefresh","resizeChange","scrollChange","removeListeners","addListeners","observe","scrollContainer","capture","passive","findScrollContainers","useOnWindowScroll","Boolean","useOnWindowResize","onWindowResize","onScroll","body","getComputedStyle","overflowX","overflowY","parentElement","every","trimLeft","trimRight","tinyCounter","mathRound","mathMin","mathMax","mathRandom","tinycolor","opts","ok","named","matchers","hsv","hsva","parseIntFromHex","convertHexToDecimal","stringInputToObject","isValidCSSUnit","bound01","convertToPercentage","mod","hsvToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","pad2","rgbaToArgbHex","convertDecimalToHex","desaturate","toHsl","clamp01","saturate","greyscale","lighten","brighten","toRgb","darken","spin","complement","triad","tetrad","splitcomplement","analogous","part","monochromatic","toHsv","modification","isDark","getBrightness","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","_applyCombination","fromRatio","newColor","rgb1","rgb2","readability","isReadable","wcag2","wcag2Parms","parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","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","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","define","equal","flags","valueOf","webpackPolyfill","deprecate","isFunction","isLength","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","eq","nativeCreate","getNative","isKeyable","__data__","baseGetTag","toSource","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","Ctor","ctorString","isSymbol","assignValue","baseAssignValue","customizer","isNew","originalModule","raf","writing","lastTime","startQueue","frameQueue","writeQueue","findIndex","kickoff","timeoutQueue","ms","onFrame","write","onWrite","extrapolate","outputRange","inputRange","extrapolateLeft","extrapolateRight","findRange","inputMin","inputMax","outputMin","outputMax","_arrayWithHoles","_nonIterableRest","_isNativeReflectConstruct","sham","Proxy","_construct","Parent","Class","_iterableToArray","iter","refs","baseForOwn","castFunction","iteratee","freeProcess","process","nodeUtil","types","objectProto","getPrototype","overArg","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","arrayFilter","stubArray","nativeGetSymbols","getSymbols","symbol","reIsDeepProp","reIsPlainProp","isObjectLike","baseKeysIn","byteLength","flagInterpolate","getResult","isFirstRun","committed","newInputs","lastInputs","areInputsEqual","useCallbackOne","wait","later","debounced","callNow","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","memoize","reactPropsRegex","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","effect","unmounted","prevRef","baseFor","baseTimes","isArguments","isIndex","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","reIsUint","baseIsTypedArray","baseUnary","nodeIsTypedArray","isObject","tag","funcToString","baseIsEqualDeep","baseIsEqual","bitmask","stack","SetCache","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","baseGetAllKeys","arrayPush","keysFunc","symbolsFunc","srcValue","castPath","toKey","isKey","stringToPath","objValue","getSymbolsIn","allocUnsafe","cloneBuffer","isDeep","_react","_react2","_ref","_ref$fill","_ref$width","_ref$height","_ref$style","viewBox","primitives","E","evtArr","evts","liveEvents","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","stylis_min","W","K","I","J","ca","O","A","H","X","D","da","ea","fa","L","Y","Q","ia","Z","ja","ka","aa","ba","la","ma","R","na","oa","S","U","use","unitlessKeys","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","Wrapper","Fragment","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","__self","__source","$$typeof","_owner","jsx","jsxs","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","flattenNames","_isString3","_forOwn3","_isPlainObject3","_map3","things","thing","nativeObjectToString","isOwn","unmasked","createBaseFor","fromRight","typedArrayTags","isPrototype","nativeKeys","funcProto","objectCtorString","proto","arrayMap","baseIteratee","baseMap","collection","baseMatches","baseMatchesProperty","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","assocIndexOf","pairs","LARGE_ARRAY_SIZE","isMasked","reIsHostCtor","reIsNative","coreJsData","maskSrcKey","uid","IE_PROTO","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","equalArrays","equalByTag","equalObjects","argsTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","setCacheAdd","setCacheHas","predicate","mapToArray","setToArray","symbolProto","symbolValueOf","byteOffset","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","resIndex","isStrictComparable","hasIn","baseGet","defaultValue","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","resolver","memoized","baseToString","symbolToString","baseHasIn","hasPath","hasFunc","baseProperty","basePropertyDeep","baseEach","createBaseEach","eachFunc","mergeClasses","_cloneDeep3","styles","toMerge","baseClone","CLONE_DEEP_FLAG","arrayEach","baseAssign","baseAssignIn","copySymbols","copySymbolsIn","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","keysIn","funcTag","cloneableTags","isFlat","isFull","isFunc","subValue","copyObject","nativeKeysIn","isProto","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","dataView","reFlags","regexp","baseCreate","objectCreate","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","autoprefix","_forOwn2","borderRadius","msBorderRadius","MozBorderRadius","OBorderRadius","WebkitBorderRadius","boxShadow","msBoxShadow","MozBoxShadow","OBoxShadow","WebkitBoxShadow","userSelect","WebkitTouchCallout","KhtmlUserSelect","MozUserSelect","msUserSelect","WebkitUserSelect","WebkitBoxFlex","MozBoxFlex","WebkitFlex","msFlex","flexBasis","WebkitFlexBasis","justifyContent","WebkitJustifyContent","transition","msTransition","MozTransition","OTransition","WebkitTransition","msTransform","MozTransform","OTransform","WebkitTransform","absolute","otherElementStyles","otherStyle","prefixed","expanded","Span","_React$Component","Hover","_temp","handleMouseOver","handleMouseOut","onMouseOver","onMouseOut","Active","handleMouseDown","handleMouseUp","onMouseDown","onMouseUp","setProp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","$$$hostConfig","encodeURIComponent","pa","ra","sa","ta","ua","wa","_render","_payload","_init","xa","ya","za","Aa","Ca","Qb","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Pa","Qa","Ra","Sa","Ta","Ua","supportsPersistence","Va","supportsHydration","Wa","getInstanceFromNode","Xa","makeOpaqueHydratingObject","Ya","makeClientId","Za","beforeActiveInstanceBlur","$a","afterActiveInstanceBlur","bb","supportsTestSelectors","findFiberRoot","db","getBoundingRect","eb","getTextContent","fb","isHiddenSubtree","gb","matchAccessibilityRole","hb","setFocusIfFocusable","setupIntersectionObserver","jb","kb","lb","commitTextUpdate","mb","nb","ob","pb","rb","sb","resetTextContent","tb","ub","wb","unhideTextInstance","xb","yb","cloneInstance","zb","createContainerChildSet","Ab","appendChildToContainerChildSet","Bb","finalizeContainerChildren","Cb","replaceContainerChildren","Db","cloneHiddenInstance","Eb","cloneHiddenTextInstance","Fb","canHydrateInstance","Gb","canHydrateTextInstance","Hb","isSuspenseInstancePending","Ib","isSuspenseInstanceFallback","Jb","getNextHydratableSibling","Kb","getFirstHydratableChild","Lb","hydrateInstance","Mb","hydrateTextInstance","Nb","getNextHydratableInstanceAfterSuspenseInstance","Ob","commitHydratedContainer","Pb","commitHydratedSuspenseInstance","Rb","Sb","Tb","prepareStackTrace","Ub","Vb","Wb","Xb","Yb","Zb","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","$b","getChildContext","cc","__reactInternalMemoizedMergedChildContext","dc","ec","fc","gc","hc","ic","lc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","mc","entangledLanes","entanglements","oc","pc","qc","rc","eventTimes","clz32","tc","uc","wc","unstable_scheduleCallback","xc","unstable_cancelCallback","yc","unstable_shouldYield","zc","unstable_requestPaint","Ac","Bc","unstable_getCurrentPriorityLevel","Cc","unstable_ImmediatePriority","Dc","unstable_UserBlockingPriority","Ec","unstable_NormalPriority","Fc","unstable_LowPriority","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","ReactCurrentBatchConfig","Uc","Vc","Wc","Xc","Yc","Zc","$c","cd","_currentValue","_currentValue2","dd","ed","childLanes","fd","firstContext","lanes","gd","observedBits","responders","hd","updateQueue","baseState","memoizedState","firstBaseUpdate","lastBaseUpdate","shared","jd","kd","eventTime","lane","md","nd","od","pd","qd","rd","sd","vd","isMounted","_reactInternals","enqueueSetState","td","ud","enqueueReplaceState","enqueueForceUpdate","wd","shouldComponentUpdate","isPureReactComponent","xd","updater","yd","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","zd","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ad","Bd","_stringRef","Cd","Dd","lastEffect","nextEffect","firstEffect","Ed","Fd","Gd","implementation","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dehydrated","memoizedProps","revealOrder","Ud","Vd","Wd","Xd","Yd","Zd","pendingProps","$d","ee","_workInProgressVersionPrimary","_workInProgressVersionSecondary","fe","ReactCurrentDispatcher","ge","he","ie","je","ke","le","ne","pe","qe","baseQueue","re","se","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","ue","ve","_getVersion","_source","mutableReadLanes","we","getSnapshot","setSnapshot","Oa","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","readContext","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","Oe","Pe","Re","Se","Te","Ue","Ve","We","baseLanes","Xe","Ye","Ze","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","$e","pendingContext","mf","nf","of","pf","retryLane","fallback","unstable_avoidThisFallback","unstable_expectedLoadTime","ef","ff","gf","hf","jf","isBackwards","rendering","renderingStartTime","tailMode","kf","lf","qf","pendingChildren","rf","hydrate","tf","uf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","componentDidCatch","Ff","componentStack","Gf","WeakSet","Hf","If","Jf","__reactInternalSnapshotBeforeUpdate","Kf","Lf","Mf","Nf","Of","Pf","onCommitFiberUnmount","componentWillUnmount","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","pg","qg","rg","sg","IsSomeRendererActing","V","tg","ug","vg","wg","xg","yg","zg","gh","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","jc","Ng","Og","callbackNode","expirationTimes","callbackPriority","kc","Pg","Qg","Rg","Sg","Tg","Ug","Vg","finishedWork","finishedLanes","Zg","timeoutHandle","ah","bh","pingCache","Qe","ch","Xg","ld","dh","eh","fh","hh","ih","onCommitFiberRoot","jh","kh","lh","mutableSourceEagerHydrationData","_calculateChangedBits","unstable_observedBits","mh","nh","unstable_flushAllWithoutAsserting","oh","ph","qh","setImmediate","MessageChannel","port1","onmessage","port2","postMessage","og","rh","th","isReactComponent","uh","vh","wh","xh","yh","zh","IsThisRendererActing","act","attemptContinuousHydration","attemptHydrationAtCurrentPriority","attemptSynchronousHydration","attemptUserBlockingHydration","batchedEventUpdates","createComponentSelector","createHasPsuedoClassSelector","createPortal","createRoleSelector","createTestNameSelector","createTextSelector","deferredUpdates","discreteUpdates","findAllNodes","findBoundingRects","findHostInstance","findHostInstanceWithNoPortals","Ba","findHostInstanceWithWarning","flushControlled","flushDiscreteUpdates","$g","flushPassiveEffects","flushSync","focusWithin","getCurrentUpdateLanePriority","getFindAllNodesFailureDescription","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findFiberByHostInstance","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","observeVisibleRects","registerMutableSourceForHydration","runWithPriority","shouldSuspend","unbatchedUpdates","unstable_forceFrameRate","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","GLTFLoader","dracoLoader","ddsLoader","ktx2Loader","meshoptDecoder","pluginCallbacks","register","GLTFMaterialsClearcoatExtension","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFMaterialsTransmissionExtension","GLTFLightsExtension","GLTFMeshoptCompression","GLTFRegistry","removeAll","_onError","gltf","setDRACOLoader","setDDSLoader","setKTX2Loader","setMeshoptDecoder","unregister","content","plugins","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","asset","GLTFParser","fileLoader","plugin","extensionsUsed","extensionName","extensionsRequired","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_LIGHTS_PUNCTUAL","KHR_MATERIALS_CLEARCOAT","KHR_MATERIALS_TRANSMISSION","KHR_TEXTURE_BASISU","EXT_TEXTURE_WEBP","EXT_MESHOPT_COMPRESSION","uses","isSupported","_markDefs","nodeDefs","nodeIndex","nodeLength","nodeDef","_addNodeRef","_loadLight","lightIndex","dependency","lightNode","lightDef","innerConeAngle","outerConeAngle","createUniqueName","createNodeAttachment","_getNodeRef","getMaterialType","extendParams","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","extendMaterialParams","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","transmissionFactor","transmissionTexture","textureIndex","textureDef","loadTextureImage","uri","textureLoader","detectSupport","Image","loadBufferView","bufferView","bufferViews","extensionDef","getDependency","decoder","supported","byteStride","decodeGltfBuffer","BINARY_EXTENSION_CHUNK_TYPES","headerView","magic","getUint32","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","GLTFMeshStandardSGMaterial","isGLTFSpecularGlossinessMaterial","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","_extraUniforms","uniformName","USE_SPECULARMAP","USE_GLOSSINESSMAP","USE_UV","specularGlossinessParams","pbrSpecularGlossiness","diffuseFactor","diffuseTexture","glossinessFactor","specularFactor","specularGlossinessTexture","specGlossMapDef","createMaterial","GLTFCubicSplineInterpolant","decodePrimitive","primitive","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","attributeName","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","decodeDracoFile","extendTexture","texCoord","stride2","stride3","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","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","meshDef","targetNames","createPrimitiveKey","primitiveDef","dracoExtension","createAttributesKey","attributesKey","associations","primitiveCache","meshCache","cameraCache","lightCache","nodeNamesUsed","navigator","userAgent","addPrimitiveAttributes","assignAttributeAccessor","accessorIndex","accessor","gltfAttributeName","targets","maxDisplacement","expandByVector","computeBounds","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","morphPositions","addMorphTargets","toTrianglesDrawMode","numberOfTriangles","newIndices","newGeometry","_invokeAll","ext","getDependencies","scenes","skinDefs","skins","meshDefs","meshes","skinLength","skin","_invokeOne","loadScene","loadNode","loadMesh","loadAccessor","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","bufferIndex","bufferDef","bufferViewDef","sparse","pendingBufferViews","TypedArray","elementBytes","itemBytes","ibSlice","ibCacheKey","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","textureExtensions","URL","webkitURL","sourceURI","isObjectURL","colorType","getUint8","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","originalName","sanitizedName","loadGeometries","createDracoPrimitive","geometryPromise","meshIndex","cameraIndex","cameraDef","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","inputAccessors","outputAccessors","inputAccessor","outputAccessor","targetName","outputArray","scaled","buildNodeHierachy","nodeId","parentObject","pendingJoints","jointNodes","jointNode","sceneIndex","sceneDef","nodeIds","Constants","Handedness","NONE","ComponentState","DEFAULT","TOUCHED","PRESSED","ComponentProperty","BUTTON","X_AXIS","Y_AXIS","STATE","ComponentType","TRIGGER","SQUEEZE","TOUCHPAD","THUMBSTICK","ButtonTouchThreshold","AxisTouchThreshold","VisualResponseProperty","TRANSFORM","VISIBILITY","fetchJsonFile","statusText","fetchProfilesList","basePath","profilesList","xrInputSource","defaultProfile","getAssetPath","supportedProfilesList","profiles","profileId","supportedProfile","profilePath","deprecated","profile","layout","layouts","assetPath","defaultComponentValues","button","VisualResponse","visualResponseDescription","componentProperty","states","valueNodeName","valueNodeProperty","minNodeName","maxNodeName","updateFromComponent","normalizedXAxis","normalizedYAxis","normalizeAxes","componentId","componentDescription","visualResponses","gamepadIndices","rootNodeName","touchPointNodeName","responseName","visualResponse","gamepad","buttons","gamepadButton","pressed","touched","MotionController","assetUrl","layoutDescription","updateFromGamepad","DEFAULT_PROFILES_PATH","XRControllerModel","motionController","addAssetSceneToControllerModel","controllerModel","MotionControllerConstants","touchPointNode","sphereGeometry","minNode","maxNode","valueNode","findNodes","setEnvironmentMap","lerpVectors","XRControllerModelFactory","gltfLoader","_assetCache","createControllerModel","targetRayMode","fetchProfile","cachedAsset","ARButton","sessionInit","showStartAR","domOverlay","overlay","svg","currentSession","optionalFeatures","onSessionStarted","onSessionEnded","textContent","cursor","onmouseenter","onmouseleave","onclick","requestSession","disableButton","showARNotSupported","stylizeElement","padding","border","textAlign","isSessionSupported","isSecureContext","href","innerHTML","textDecoration","XRHandPrimitiveModel","handModel","handMesh","XRHand","jointMaterial","tipMaterial","XRJoints","jointMesh","XRJoint","setScalar","$","tt","nt","rt","et","ot","mem","Worker","inflateSync","deflateSync","ht","ut","ct","lt","vt","terminate","consume","ondata","ft","st","filename","mtime","gt","yt","wt","deflate","mt","bt","inflate","xt","zt","gzip","gzipSync","St","kt","gunzip","gunzipSync","Mt","Ct","zlib","zlibSync","Ut","At","unzlib","unzlibSync","Ot","Tt","decompress","decompressSync","Dt","Ft","TextEncoder","Et","It","stream","Zt","jt","Gt","strToU8","encode","strFromU8","Lt","Rt","Bt","Ht","Pt","os","flag","compression","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","crc","attrs","Wt","Yt","qt","Jt","Kt","zip","zipSync","Nt","Qt","Vt","Xt","onfile","unzip","unzipSync","NURBSUtils","findSpan","calcBasisFunctions","span","saved","rv","lv","calcBSplinePoint","Nj","wNj","calcBasisFunctionDerivatives","zeroArr","ders","ndu","rk","pk","j2","calcBSplineDerivatives","du","CK","nders","Pw","calcKoverI","nom","calcRationalCurveDerivatives","Pders","Aders","wders","calcNURBSDerivatives","calcSurfacePoint","uspan","vspan","Nu","Nv","Sw","NURBSCurve","degree","knots","controlPoints","startKnot","endKnot","hpoint","FBXLoader","fbxTree","connections","sceneGraph","FBXTreeParser","GeometryParser","AnimationParser","TextParser","BinaryParser","BinaryReader","littleEndian","dv","FBXTree","getFbxVersion","convertFBXTimeToSeconds","FBXBuffer","CORRECT","convertArrayBufferToString","isFbxFormatBinary","FBXText","read","isFbxFormatASCII","parseConnections","deformers","parseDeformers","geometryMap","parseScene","connectionMap","Connections","rawConnection","fromID","toID","relationship","parents","parentRelationship","ID","childRelationship","blobs","Objects","videoNodes","Video","nodeID","videoNode","RelativeFilename","Filename","arrayBufferContent","base64Content","parseImage","fileName","textureMap","textureNodes","parseTexture","textureNode","attrName","wrapModeU","WrapModeU","wrapModeV","WrapModeV","valueU","valueV","Scaling","FileName","materialMap","materialNodes","parseMaterial","materialNode","ShadingModel","parseParameters","BumpFactor","Diffuse","DiffuseColor","DisplacementFactor","Emissive","EmissiveColor","EmissiveFactor","Opacity","ReflectionFactor","Shininess","Specular","SpecularColor","LayeredTexture","DeformerNodes","Deformer","deformerNode","relationships","attrType","parseSkeleton","geometryID","rawTargets","parseMorphTargets","deformerNodes","rawBones","boneNode","rawBone","transformLink","TransformLink","Indexes","Weights","rawMorphTargets","morphTargetNode","rawMorphTarget","initialWeight","DeformPercent","fullWeights","FullWeights","geoID","modelMap","parseModels","modelNodes","Model","model","modelNode","setLookAtProperties","connection","bindSkeleton","createAmbientLight","setupMorphMaterials","transformData","parentMatrix","parentMatrixWorld","generateTransform","buildSkeleton","createCamera","createLight","createMesh","createCurve","getTransformData","subBone","cameraAttribute","attr","NodeAttribute","CameraProjectionType","nearClippingPlane","NearPlane","farClippingPlane","FarPlane","innerWidth","innerHeight","AspectWidth","AspectHeight","FieldOfView","FocalLength","lightAttribute","LightType","Intensity","CastLightOnObject","FarAttenuationEnd","EnableFarAttenuation","InnerAngle","OuterAngle","CastShadows","FBX_Deformer","geo","inheritType","InheritType","getEulerOrder","RotationOrder","Lcl_Translation","preRotation","PreRotation","Lcl_Rotation","postRotation","PostRotation","Lcl_Scaling","scalingOffset","ScalingOffset","scalingPivot","ScalingPivot","rotationOffset","RotationOffset","rotationPivot","RotationPivot","lookAtTarget","pos","bindMatrices","parsePoseNodes","geoConnParent","BindPoseNode","Pose","poseNodes","PoseNode","poseNode","Matrix","GlobalSettings","ambientColor","AmbientColor","setupMorphMaterial","matUuid","sharedMat","clonedMat","geoNodes","Geometry","parseGeometry","geoNode","parseMeshGeometry","parseNurbsGeometry","GeometricTranslation","GeometricRotation","GeometricScaling","genGeometry","preTransform","geoInfo","parseGeoNode","genBuffers","weightsIndices","vertexWeights","mappingType","prevMaterialIndex","currentIndex","lastGroup","vertexPositions","Vertices","vertexIndices","PolygonVertexIndex","LayerElementColor","parseVertexColors","LayerElementMaterial","parseMaterialIndices","LayerElementNormal","parseNormals","LayerElementUV","UV","parseUVs","weightTable","polygonIndex","faceLength","displayedWeightsWarning","facePositionIndexes","faceNormals","faceColors","faceUVs","faceWeights","faceWeightIndices","vertexIndex","polygonVertexIndex","endOfFace","weightIndices","wIndex","Weight","weightIndex","comparedWeight","comparedWeightIndex","comparedWeightArray","genFace","parentGeo","parentGeoNode","rawTarget","morphGeoNode","genMorphGeometry","morphPositionsSparse","morphIndex","morphGeoInfo","morphBuffers","NormalNode","MappingInformationType","referenceType","ReferenceInformationType","Normals","indexBuffer","NormalIndex","NormalsIndex","dataSize","UVNode","UVIndex","ColorNode","Colors","ColorIndex","MaterialNode","materialIndexBuffer","materialIndices","Order","KnotVector","pointsValues","Form","animationClips","rawClips","parseClips","rawClip","addClip","AnimationCurve","curveNodesMap","parseAnimationCurveNodes","parseAnimationCurves","layersMap","parseAnimationLayers","parseAnimStacks","rawCurveNodes","AnimationCurveNode","rawCurveNode","curveNode","rawCurves","animationCurve","KeyTime","KeyValueFloat","animationCurveID","animationCurveRelationship","rawLayers","AnimationLayer","layerCurveNodes","modelID","rawModel","modelName","initialPosition","initialRotation","initialScale","morph","deformerID","morpherID","morphName","rawStacks","AnimationStack","rawTracks","generateTracks","positionTrack","generateVectorTrack","rotationTrack","generateRotationTrack","scaleTrack","morphTrack","generateMorphTrack","initialValue","getTimesForAllAxes","getKeyframeTrackValues","interpolateRotations","quaternionValues","morphNum","lastValue","prevValue","xIndex","yIndex","xValue","yValue","zValue","valuesSpan","absoluteSpan","numSubIntervals","nextValue","initialTime","interval","nextTime","interpolatedTimes","interpolatedValues","getPrevNode","nodeStack","currentIndent","getCurrentNode","getCurrentProp","currentProp","pushStack","popStack","setCurrentProp","currentPropName","allNodes","matchComment","matchEmpty","matchBeginning","matchProperty","parseNodeBegin","parseNodeProperty","parseNodePropertyContinued","nodeAttrs","parseNodeAttr","currentNode","contentLine","propValue","connProps","rest","append","parseNumberArray","parseNodeSpecialProperty","innerPropName","innerPropType1","innerPropType2","innerPropFlag","innerPropValue","reader","skip","endOfContent","parseNode","getOffset","endOffset","getUint64","numProperties","nameLen","getString","propertyList","parseProperty","singleProperty","subNode","parseSubNode","getBoolean","getFloat64","getFloat32","getInt32","getInt64","getInt16","arrayLength","compressedLength","getBooleanArray","getFloat64Array","getFloat32Array","getInt32Array","getInt64Array","fflate","reader2","nullByte","dataArray","infoObject","tempEuler","tempVec","lTranslationM","lPreRotationM","lRotationM","lPostRotationM","lScalingM","lScalingPivotM","lScalingOffsetM","lRotationOffsetM","lRotationPivotM","lParentGX","lParentLX","lGlobalT","makeRotationFromEuler","lLRM","lParentGRM","lParentTM","lParentGSM","lParentGRSM","lLSM","lGlobalRS","lParentLSM","lParentLSM_inv","lParentGSM_noLocal","lRotationPivotM_inv","lScalingPivotM_inv","lTransform","lLocalTWithAllPivotAndOffsetInfo","lGlobalTranslation","enums","XRHandOculusMeshModel","XRHandModel","updateMesh","XRHandModelFactory","createHandModel","XRController","onConnected","onDisconnected","xrController","fake","ObjectsState","useXREvent","handlerRef","React__default","useXR","allControllers","cleanups","originalEvent","InteractionsContext","InteractionManager","none","hoverState","interactions","addInteraction","eventType","removeInteraction","tempMatrix","hovering","_ObjectsState$get","_ObjectsState$get2","triggerEvent","interaction","_ObjectsState$get3","contextValue","useInteraction","isPresent","handlerFn","maybeRef","passedRef","onHover","onBlur","onSelectStart","onSelectEnd","onSelect","onSqueezeStart","onSqueezeEnd","onSqueeze","XRContext","XR","setIsPresenting","player","setControllers","existing","useControllers","handleSessionChange","XRCanvas","ARCanvas","_ref3","createButton","xrValue","interactionsValue","modelFactory","modelCache","DefaultXRControllers","rayMaterial","rays","rayLength","defaultCalculatePosition","el","objectPos","project","Html","_portal$current","eps","className","prepend","fullscreen","portal","scaleFactor","zIndexRange","calculatePosition","old","cssText","cameraPos","deltaCamObj","camDir","isObjectBehindCamera","vFOV","dist","objectScale","objectZIndex","createState","partial","nextState","previousState","getState","selector","equalityFn","currentSlice","listenerToAdd","nextSlice","previousSlice","subscribeWithSelector","useIsoLayoutEffect","create$1","saveLastTotalLoaded","useProgress","useStore","newStateSlice","stateRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","errors","alignItems","transformOrigin","fontVariantNumeric","marginTop","fontSize","fontFamily","whiteSpace","containerStyles","innerStyles","barStyles","dataStyles","dataInterpolation","toFixed","initialState","div","reportWebVitals","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","OrbitControls","minDistance","minZoom","maxZoom","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","screenSpacePanning","keyPanSpeed","autoRotate","autoRotateSpeed","UP","BOTTOM","mouseButtons","touches","ONE","TWO","target0","position0","zoom0","_domElementKeyEvents","getPolarAngle","spherical","getAzimuthalAngle","listenToKeyEvents","onKeyDown","saveState","changeEvent","quat","setFromUnitVectors","quatInverse","lastQuaternion","twoPI","setFromVector3","rotateLeft","sphericalDelta","makeSafe","panOffset","setFromSpherical","zoomChanged","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","ownerDocument","startEvent","endEvent","TOUCH_ROTATE","TOUCH_PAN","TOUCH_DOLLY_PAN","TOUCH_DOLLY_ROTATE","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","rotateUp","panLeft","objectMatrix","panUp","pan","deltaX","deltaY","targetDistance","clientHeight","clientWidth","dollyOut","dollyScale","dollyIn","handleMouseDownRotate","clientX","clientY","handleMouseDownPan","handleTouchStartRotate","pageX","pageY","handleTouchStartPan","handleTouchStartDolly","handleTouchMoveRotate","handleTouchMovePan","handleTouchMoveDolly","pointerType","mouseAction","handleMouseDownDolly","ctrlKey","metaKey","shiftKey","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","onMouseMove","handleMouseWheel","keyCode","handleKeyDown","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","MapControls","addV","subV","calculateVelocity","delta_t","calculateVelocities","movement","calculateDirection","calculateAllKinematics","velocities","getIntentionalDisplacement","rubberband","dimension","rubberband2","rubberbandIfOutOfBounds","minMax","chainFns","fns","matchKeysFromObject","matchingObject","valueFn","getInitialState","initialCommon","_blocked","_intentional","_movement","_initial","_lastEventType","lastOffset","previous","first","timeStamp","canceled","initialCoordinates","vxvy","initialDistanceAngle","vdva","turns","scrolling","wheeling","dragging","moving","down","altKey","drag","_isTap","_delayedEvent","tap","swipe","pinch","wheel","move","setListeners","eventName","getTouchEvents","changedTouches","getGenericEventData","touchEvents","getModifierKeys","getPointerEventValues","Controller","timeouts","domListeners","windowListeners","clean","stateKey","resetBindings","domTarget","getDomTarget","addWindowListeners","removeWindowListeners","addDomTargetListeners","addBindings","eventNamesArray","getBindings","captureString","fnsArray","getBind","useRecognizers","nativeHandlers","nativeRefs","RecognizerClass","Recognizer","getStartGestureState","fireGestureHandler","intentionalX","intentionalY","forceFlag","newMemo","updateSharedState","updateGestureState","getGenericPayload","isStartEvent","checkIntentionality","getMovement","intentional","prevMovement","getInternalMovement","_m0","intentionalityCheck","_i0","_i1","_rubberband","CoordinatesRecognizer","_ix","_iy","intentionalMovement","absX","absY","configAxis","lockDirection","getKinematics","movementDetection","kinematics","mapStateValues","DragRecognizer","ingKey","wasTouch","isEventTypeTouch","dragShouldStart","setPointers","pointerId","removePointers","dragListeners","isTouch","onDragStart","onDragChange","genericEventData","onDragEnd","vx","vy","endState","swipeVelocity","svx","svy","swipeDistance","onCancel","startDrag","startState","defaultWindow","defaultCoordinatesOptions","getInternalGenericOptions","eventOptions","restConfig","getInternalGestureOptions","gestureConfig","getInternalCoordinatesOptions","coordinatesConfig","internalOptions","boundsArray","getInternalDragOptions","dragConfig","dragOptions","DEFAULT_SWIPE_VELOCITY","DEFAULT_SWIPE_DISTANCE","filterTaps","internalCoordinatesOptions","useDrag","mergedConfig","calculateChange","initialA","containerWidth","containerHeight","pageXOffset","pageYOffset","checkboardCache","serverCanvas","checkboard","fillStyle","fillRect","Checkboard","renderers","reactCSS","isValidElement","cloneElement","Alpha","_ref2","handleChange","change","unbindEventListeners","_this2","gradient","margin","slider","vertical","overwrite","PureComponent","VALID_KEY_CODES","idCounter","EditableInput","handleBlur","blurValue","setUpdatedValue","getNumberValue","getArrowOffset","updatedValue","handleDrag","dragLabel","movementX","dragMax","getValueObjectWithLabel","inputId","prevProps","prevState","activeElement","label","arrowOffset","onChangeValue","spellCheck","hideLabel","htmlFor","_h","Hue","_props$direction","assignMergeValue","isArrayLikeObject","isPlainObject","safeGet","toPlainObject","baseMergeDeep","srcIndex","mergeFunc","isCommon","isTyped","baseMerge","thisArg","nativeMax","overRest","otherArgs","baseSetToString","nativeNow","shortOut","setToString","lastCalled","stamp","remaining","baseRest","isIterateeCall","createAssigner","assigner","sources","guard","Raised","zDepth","_ref$styles","passedStyles","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","isBinary","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","isInvoking","throttle","Saturation","_container$getBoundin","bright","renderWindow","getContainerRenderWindow","contains","circle","simpleCheckForValidColor","checked","passed","toState","oldHue","isValidHex","getContrastingColor","isvalidColorString","stringWithoutDegree","ColorWrap","Picker","ColorPicker","onChangeComplete","handleSwatchHover","onSwatchHover","optionalEvents","handleFocus","Focus","onFocus","_ref$onClick","_ref$title","_ref$focusStyle","focusStyle","swatch","tabIndex","AlphaPointer","picker","backgroundColor","AlphaPicker","_ref$className","BlockSwatches","swatches","marginRight","float","marginBottom","Swatch","Block","hexCode","card","borderStyle","borderWidth","borderColor","marginLeft","boxSizing","deepPurple","lightBlue","lightGreen","amber","deepOrange","blueGrey","CircleSwatch","circleSize","circleSpacing","Circle","flexWrap","isUndefined","ChromeFields","toggleViews","showHighlight","hideHighlight","paddingTop","fields","field","paddingLeft","toggle","icon","iconHighlight","textTransform","UnfoldMoreHorizontalIcon","onMouseEnter","ChromePointer","ChromePointerCircle","Chrome","disableAlpha","defaultView","paddingBottom","controls","toggles","CompactColor","colorUtils","CompactFields","paddingRight","HEXwrap","HEXinput","HEXlabel","RGBwrap","RGBinput","RGBlabel","Compact","compact","hoverSwatch","Github","borderBottomColor","triangleShadow","GithubSwatch","SliderPointer","HuePicker","HuePointer","borderBottom","Hex","third","PhotoshopPicker","divider","fieldSymbols","PhotoshopPointerCircle","triangleBorder","Extend","leftInside","rightInside","PhotoshopButton","backgroundImage","PhotoshopPreviews","currentColor","new","Photoshop","_props","_props$styles","_props$className","previews","PhotoshopPointer","onAccept","PhotoshopFields","SketchFields","single","double","SketchPresetColors","borderTop","swatchWrap","handleClick","colorObjOrString","Sketch","presetColors","sliders","activeColor","SliderSwatch","SliderSwatches","Slider","SwatchesColor","check","CheckIcon","SwatchesGroup","Swatches","Twitter","hexcode","GooglePointerCircle","GooglePointer","GoogleFields","_values","_values2","hsvValue","column","input2","label2","rgbValue","hslValue","Google","ControlsContext","gui","addControl","removeControl","withControls","CanvasEl","ControlType","useLocalStorage","storedValue","setStoredValue","valueToStore","Row","styled","Label","Value","BaseControl","flexLabel","InputRange","PRECISION","FakeCheckbox","Checkbox","Button","ColorBox","Select","Input","StringControl","THRESHOLD","FileInput","ControlComponents","stage","setVal","cvalue","BooleanControl","SelectControl","ColorControl","inline","setOpen","pickerRef","pickerProps","PickerElement","hidden","ButtonControl","scrub","useSpring","clampMx","setCursor","xmlns","stroke","Noop","ControlItem","Heading","Container","ControlGroup","isDefault","control","mq","posProps","ControlsAnchor","Float","Header","CollapseIcon","Items","Controls","defaultClosedGroups","anchor","TOP_RIGHT","collapsed","setCollapsed","setPos","getGroupOptions","groupName","defaultClosed","maxHeight","setControls","CameraControls","Model2","modelo","position-x","posicion","position-y","position-z","escala","App","setContent","contentAPI","elementAPI","sRGB","getElementById"],"mappings":"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","file":"static/js/main.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = this[\"YourReactApp_webpackJsonpjs\"] = this[\"YourReactApp_webpackJsonpjs\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 251);\n","module.exports = React;","// threejs.org/license\nconst REVISION = '125';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst 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\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\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\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\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://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\n\n\tdamp: function ( x, y, lambda, dt ) {\n\n\t\treturn MathUtils.lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n\t},\n\n\t// https://www.desmos.com/calculator/vcsjnyz7x4\n\n\tpingpong: function ( x, length = 1 ) {\n\n\t\treturn length - Math.abs( MathUtils.euclideanModulo( x, length * 2 ) - length );\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\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\tseededRandom: function ( s ) {\n\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t\t// Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\n\t\treturn ( _seed - 1 ) / 2147483646;\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\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tObject.defineProperty( this, 'isVector2', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, 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( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, 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( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, 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( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isMatrix3', { value: true } );\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).copy( this ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n}\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\nlet textureId = 0;\n\nfunction Texture( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping;\n\n\tthis.wrapS = wrapS;\n\tthis.wrapT = wrapT;\n\n\tthis.magFilter = magFilter;\n\tthis.minFilter = minFilter;\n\n\tthis.anisotropy = anisotropy;\n\n\tthis.format = format;\n\tthis.internalFormat = null;\n\tthis.type = type;\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;\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\t// check cube texture with data textures\n\n\t\t\t\t\t\tif ( image[ i ].isDataTexture ) {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ].image ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ] ) );\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\t// process single image\n\n\t\t\t\t\turl = serializeImage( 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\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tObject.defineProperty( this, 'isVector4', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, 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( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, 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( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, 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() {\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 In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'isWebGLRenderTarget', { value: true } );\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\toptions = options || {};\n\n\t\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\t\tthis.texture.image = {};\n\t\tthis.texture.image.width = width;\n\t\tthis.texture.image.height = height;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t}\n\n\tsetSize( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\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() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tsuper( width, height, options );\n\n\t\tObject.defineProperty( this, 'isWebGLMultisampleRenderTarget', { value: true } );\n\n\t\tthis.samples = 4;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tObject.defineProperty( this, 'isQuaternion', { value: true } );\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\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( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\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( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, 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( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tObject.defineProperty( this, 'isVector3', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, 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( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, 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( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, 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( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\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( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, 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( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, 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() {\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 _vector = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min, max ) {\n\n\t\tObject.defineProperty( this, 'isBox3', { value: true } );\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$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( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\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( 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( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object ) {\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( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\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( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$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( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1.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, _v0 );\n\t\t_f1.subVectors( _v2, _v1 );\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, _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, _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, _v2, _extents );\n\n\t}\n\n\tclampPoint( 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( 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( 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( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\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 _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\n\nconst _box = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nconst _box$1 = /*@__PURE__*/ new Box3();\n\nclass Sphere {\n\n\tconstructor( center, radius ) {\n\n\t\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\t\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\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( 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( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin, direction ) {\n\n\t\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\t\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\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( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( 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( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( 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( 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( 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( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from 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( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isMatrix4', { value: true } );\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\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( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\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( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( 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( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$1.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( 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( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tObject.defineProperty( this, 'isEuler', { value: true } );\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order ) {\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() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order, 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( 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( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t}\n\n\treorder( 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( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\ttoVector3( 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( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$2 = 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\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.animations = [];\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$2.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$2.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.copy( this.matrixWorld ).invert() );\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.invert() );\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\tclear: function () {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t},\n\n\tattach: 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.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\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.updateWorldMatrix( true, false );\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.updateWorldMatrix( true, false );\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.updateWorldMatrix( true, false );\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.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: 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\tskeletons: {},\n\t\t\t\tanimations: {}\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.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\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 = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.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\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal, constant ) {\n\n\t\tObject.defineProperty( this, 'isPlane', { value: true } );\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\t\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\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( 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( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\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( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n}\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a, b, c ) {\n\n\t\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\t\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\t\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n\t}\n\n\tstatic getNormal( 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\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$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\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.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\tstatic getUV( 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\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\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( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( 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( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\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( 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\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 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\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tObject.defineProperty( this, 'isColor', { value: true } );\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex ) {\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( 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( 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( 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?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = 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[ 4 ] );\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-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\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( 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() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopyGammaToLinear( color, 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( color, 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( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToGamma( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex() {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t}\n\n\tgetHexString() {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( 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() {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = 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( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\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() {\n\n\t\treturn this.getHex();\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\nclass Face3 {\n\n\tconstructor( a, b, c, normal, color, materialIndex = 0 ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\t\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\t\tthis.color = ( color && color.isColor ) ? color : new Color();\n\t\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\t\tthis.materialIndex = materialIndex;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.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\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 * 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\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 = 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\nfunction Float16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nFloat16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat16BufferAttribute.prototype.constructor = Float16BufferAttribute;\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\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\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\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\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nlet _id = 0;\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: _id ++ } );\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\treturn this;\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\thasAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t},\n\n\tclearGroups: 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\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\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 && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$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 && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$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\tcomputeTangents: function () {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( attributes.tangent === undefined ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = attributes.tangent.array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: 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(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: 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\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 = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry;\n\tthis.material = material;\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.copy( matrixWorld ).invert();\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\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\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\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\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 * 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\tthis.glslVersion = null;\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\tthis.glslVersion = source.glslVersion;\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.glslVersion = this.glslVersion;\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\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.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\nfunction PerspectiveCamera( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov;\n\tthis.zoom = 1;\n\n\tthis.near = near;\n\tthis.far = far;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect;\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 {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = 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\tconst near = this.near;\n\t\tlet top = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t},\n\n\ttoJSON: 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\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}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\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\t// Why CubeTexture._needsFlipEnvMap is necessary:\n\t//\n\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t// and the flag _needsFlipEnvMap controls this conversion. The flip is not required (and thus _needsFlipEnvMap is set to false)\n\t// when using WebGLCubeRenderTarget.texture as a cube texture.\n\n\tthis._needsFlipEnvMap = true;\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\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options, dummy ) {\n\n\t\tif ( Number.isInteger( options ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\t\toptions = dummy;\n\n\t\t}\n\n\t\tsuper( size, size, options );\n\n\t\tObject.defineProperty( this, 'isWebGLCubeRenderTarget', { value: true } );\n\n\t\toptions = options || {};\n\n\t\tthis.texture = new CubeTexture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\tthis.texture._needsFlipEnvMap = false;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.format = RGBAFormat; // see #18859\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\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\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tthis.planes = [\n\n\t\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t\t];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t}\n\n\tintersectsSprite( 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( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$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( 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\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 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\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\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 = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor.xyz *= color.xyz;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\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\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\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\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#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\\tvec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t\\tvec3 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#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 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\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 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\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 diffuseColor;\\n\\tfloat specularRoughness;\\n\\tvec3 specularColor;\\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\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\t\\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\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\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 transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\n\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\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 TRANSMISSION\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSMISSION\\n\\tuniform float transmission;\\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 \\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#ifdef TRANSMISSION\\n\\t\\tfloat totalTransmission = transmission;\\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\\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 TRANSMISSION\\n\\t\\tdiffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness );\\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\ttransmissionmap_fragment: transmissionmap_fragment,\n\ttransmissionmap_pars_fragment: transmissionmap_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 * 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\tltc_1: { value: null },\n\t\tltc_2: { value: null }\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\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\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, 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\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\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 BoxGeometry( 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\tif ( background.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t// TODO Deprecate\n\n\t\t\t\tbackground = background.texture;\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background._needsFlipEnvMap ) ? - 1 : 1;\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\tboxMesh.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\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 PlaneGeometry( 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 = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\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\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, index );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\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\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\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 === undefined ) return true;\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\tattributesNum ++;\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\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\tattributesNum ++;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\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, 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 ( name === 'instanceColor' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceColor );\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, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute, 3, type, false, 12, 0 );\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\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, 1 );\n\n\t}\n\n\tfunction renderInstances( 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\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\nfunction WebGLClipping( properties ) {\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 ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\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 = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\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\tmaterialProperties.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\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = 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\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst currentRenderList = renderer.getRenderList();\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\t\t\t\t\t\trenderer.setRenderList( currentRenderList );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn 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\treturn texture;\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\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\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\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\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\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\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\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\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\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\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\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\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\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, 1 );\n\n\t}\n\n\tfunction renderInstances( 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\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\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\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.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\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\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\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\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\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\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction DataTexture2DArray( data = null, width = 1, height = 1, depth = 1 ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data, width, height, depth };\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\nfunction DataTexture3D( data = null, width = 1, height = 1, depth = 1 ) {\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, width, height, depth };\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 * 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\tconst n = nBlocks * blockSize;\n\tlet r = 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\tconst 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+)(\\])?(\\[|\\.)?/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\tconst idIsIndex = 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\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\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\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\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( /\\[\\s*i\\s*\\]/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}\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 CubeUVRefractionMapping:\n\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\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\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.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\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\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\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'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\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\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#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 !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\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'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#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 = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + 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\nfunction WebGLPrograms( renderer, cubemaps, extensions, capabilities, bindingStates, clipping ) {\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', 'instancingColor',\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', 'transmissionMap'\n\t];\n\n\tfunction getMaxBones( 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 && map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map && 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} else {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = cubemaps.get( 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 ? getMaxBones( 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\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\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: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\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\ttransmissionMap: !! material.transmissionMap,\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 || !! material.transmissionMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.transmissionMap ) && !! 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: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\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.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\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 === false ) {\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 getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\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\tgetUniforms: getUniforms,\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\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\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( properties ) {\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\t\tconst materialProperties = properties.get( material );\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: materialProperties.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 = materialProperties.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\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( properties ) {\n\n\tlet lists = new WeakMap();\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( properties );\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\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( properties );\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\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( extensions, capabilities ) {\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\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\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 ) {\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\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\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\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\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.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\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.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.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\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\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\tfunction setupView( lights, camera ) {\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\tconst viewMatrix = camera.matrixWorldInverse;\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\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\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\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\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\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\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\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\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\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\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() {\n\n\t\tlights.setup( lightsArray );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, 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\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [] );\n\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\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 * 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 * 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\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n\\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean * HALF_SAMPLE_RATE;\\n\\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\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 shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_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 === 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\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\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// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.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, shadowMaterialHorizontal, 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\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 !== stencilRef ||\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 !== stencilFail ||\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 (\\d)/.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 (\\d)/.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\tcurrentBlendingEnabled = null;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = 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\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\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__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\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, 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 isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\tconst cubeImage = [];\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t} else {\n\n\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst image = cubeImage[ 0 ],\n\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\tlet mipmaps;\n\n\t\tif ( isCompressed ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\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} else {\n\n\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}\n\n\t\t\t\t\t} else {\n\n\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}\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 {\n\n\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isDataTexture ) {\n\n\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\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\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}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\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\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t// We assume images for cube map have the same size.\n\t\t\tgenerateMipmap( 34067, 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\n\t\tsetTextureCube( texture, slot );\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.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\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\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\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\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\tthis._hand = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetHandSpace: function () {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t},\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\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.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\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.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\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\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\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\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\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\tthis.getHand = 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.getHandSpace();\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, data: event.inputSource } );\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_currentDepthNear = null;\n\t\t_currentDepthFar = null;\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\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 = async 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\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tawait gl.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\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\tanimation.setContext( session );\n\t\t\tanimation.start();\n\n\t\t\tscope.isPresenting = true;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t}\n\n\t};\n\n\tfunction onInputSourcesChange( 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 * 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.copy( camera.matrixWorld ).invert();\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.copy( camera.matrixWorld ).invert();\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\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\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\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, 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 );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material );\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 ) {\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 = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap._needsFlipEnvMap ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tconst maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\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. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap 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} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\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 ) {\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\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\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 ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\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.transmission.value = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t}\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\nfunction createCanvasElement() {\n\n\tconst canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\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// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its state isolated from the parent render call.\n\n\tconst renderStateStack = [];\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\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\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, cubemaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping;\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\textensions.init( capabilities );\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\tcubemaps = new WebGLCubeMaps( _this );\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\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, 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 ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getClearColor() now requires a Color as an argument' );\n\n\t\t\ttarget = new Color();\n\n\t\t}\n\n\t\treturn target.copy( 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\tcubemaps.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\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( 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( 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 );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\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();\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst 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\tconst 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, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\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();\n\t\tcurrentRenderState.setupLightsView( 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\trenderStateStack.pop();\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\tcurrentRenderList = 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\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.setupLightsView( 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\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\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\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, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\t// always update environment and fog - changing these trigger an initMaterial call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = cubemaps.get( material.envMap || materialProperties.environment );\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\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\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\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\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\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.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\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\tconst uniformsList = WebGLUniforms.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\t\tconst envMap = cubemaps.get( material.envMap || environment );\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\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( 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} else if ( materialProperties.envMap !== envMap ) {\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 === null ) {\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, _pixelRatio, _height );\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.getRenderList = function () {\n\n\t\treturn currentRenderList;\n\n\t};\n\n\tthis.setRenderList = function ( renderList ) {\n\n\t\tcurrentRenderList = renderList;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\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 ];\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, textureProperties.__webglTexture, activeMipmapLevel );\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\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\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.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\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 = 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 = 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\tthis.resetState = function () {\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\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\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\nclass FogExp2 {\n\n\tconstructor( color, density ) {\n\n\t\tObject.defineProperty( this, 'isFogExp2', { value: true } );\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* 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\nclass Fog {\n\n\tconstructor( color, near, far ) {\n\n\t\tObject.defineProperty( this, 'isFog', { value: true } );\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = ( near !== undefined ) ? near : 1;\n\t\tthis.far = ( far !== undefined ) ? far : 1000;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* 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\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'isScene', { value: true } );\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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}\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 = 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\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\tneedsUpdate: {\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.data.needsUpdate = value;\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 * 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\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\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 = 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\nconst _basePosition = new Vector3();\n\nconst _skinIndex = new Vector4();\nconst _skinWeight = new Vector4();\n\nconst _vector$7 = new Vector3();\nconst _matrix$1 = new Matrix4();\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.copy( bindMatrix ).invert();\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.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\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 ( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix$1.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$7.copy( _basePosition ).applyMatrix4( _matrix$1 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\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\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones = [], boneInverses = [] ) {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneInverses = boneInverses;\n\tthis.boneMatrices = null;\n\n\tthis.boneTexture = null;\n\tthis.boneTextureSize = 0;\n\n\tthis.frame = - 1;\n\n\tthis.init();\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tinit: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses.length = 0;\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.copy( this.bones[ i ].matrixWorld ).invert();\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.copy( this.boneInverses[ i ] ).invert();\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.copy( bone.parent.matrixWorld ).invert();\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 !== null ) {\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 !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t},\n\n\tfromJSON: function ( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\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: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\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\tthis.instanceColor = null;\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\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetColorAt: function ( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\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\tsetColorAt: function ( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new BufferAttribute( new Float32Array( this.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\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\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\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\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 = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry;\n\tthis.material = material;\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\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\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.copy( matrixWorld ).invert();\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.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 positionAttribute = attributes.position;\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.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\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 = positionAttribute.count - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\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\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\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\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\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\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 * 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\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry;\n\tthis.material = material;\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.copy( matrixWorld ).invert();\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 positionAttribute = attributes.position;\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.fromBufferAttribute( positionAttribute, a );\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 = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromBufferAttribute( positionAttribute, i );\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\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\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\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\tconst scope = this;\n\n\tfunction updateVideo() {\n\n\t\tscope.needsUpdate = true;\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t},\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\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\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\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 = false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\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\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * 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// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\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}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\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 index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\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 generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\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// update group 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, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\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\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\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, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices, indices, radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ 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\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\nconst _v0$2 = new Vector3();\nconst _v1$5 = new Vector3();\nconst _normal$1 = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry, thresholdAngle ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t\tif ( geometry.isGeometry === true ) {\n\n\t\t\tconsole.error( 'THREE.EdgesGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst precisionPoints = 4;\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\n\t\tconst indexAttr = geometry.getIndex();\n\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\tconst indexArr = [ 0, 0, 0 ];\n\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\tconst hashes = new Array( 3 );\n\n\t\tconst edgeData = {};\n\t\tconst vertices = [];\n\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\tif ( indexAttr ) {\n\n\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t} else {\n\n\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t}\n\n\t\t\tconst { a, b, c } = _triangle;\n\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t_triangle.getNormal( _normal$1 );\n\n\t\t\t// create hashes for the edge from the vertices\n\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t// skip degenerate triangles\n\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// iterate over every edge\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\tif ( _normal$1.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\tnormal: _normal$1.clone(),\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// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\tfor ( const key in edgeData ) {\n\n\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t_v0$2.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t_v1$5.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\tvertices.push( _v0$2.x, _v0$2.y, _v0$2.z );\n\t\t\t\tvertices.push( _v1$5.x, _v1$5.y, _v1$5.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n}\n\n/**\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\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\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\tconst 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\tconst 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\tconst 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\tconst 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\tconst 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\tconst queue = [];\n\tlet i, 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\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\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\tconst 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\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\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\tconst px = ( 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\tconst 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\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 * 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\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes, options ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\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\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\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\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\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 ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\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\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = 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 ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.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\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\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\toneHoleMovements = [];\n\n\t\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\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ 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\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\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, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).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\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\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\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON( shapes, options, data );\n\n\t}\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};\n\nfunction toJSON( shapes, options, 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\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points, segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices and uvs\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 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}\n\n\t\t}\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( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// generate normals\n\n\t\tthis.computeVertexNormals();\n\n\t\t// if the geometry is closed, we need to average the normals along the seam.\n\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\tif ( phiLength === Math.PI * 2 ) {\n\n\t\t\tconst normals = this.attributes.normal.array;\n\t\t\tconst n1 = new Vector3();\n\t\t\tconst n2 = new Vector3();\n\t\t\tconst n = new Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\n\t\t\tconst base = segments * points.length * 3;\n\n\t\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t\t// select the normal of the vertex in the first line\n\n\t\t\t\tn1.x = normals[ j + 0 ];\n\t\t\t\tn1.y = normals[ j + 1 ];\n\t\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t\t// select the normal of the vertex in the last line\n\n\t\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t\t// average normals\n\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t\t// assign the new values to both normals\n\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\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\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.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\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\nParametricGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\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// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 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}\n\n\t\t}\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}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes, curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\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 groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\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\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON$1( shapes, data );\n\n\t}\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\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 8, heightSegments = 6, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\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// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\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.copy( vertex ).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 + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\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}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\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\nclass TextGeometry extends ExtrudeGeometry {\n\n\tconstructor( text, parameters = {} ) {\n\n\t\tconst font = parameters.font;\n\n\t\tif ( ! ( font && font.isFont ) ) {\n\n\t\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\t\treturn new BufferGeometry();\n\n\t\t}\n\n\t\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t\t// translate parameters to ExtrudeGeometry API\n\n\t\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t\t// defaults\n\n\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\tsuper( shapes, parameters );\n\n\t\tthis.type = 'TextGeometry';\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\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\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\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( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + 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\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}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\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\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\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\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\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\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\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\t\tnormal.subVectors( vertex, P1 ).normalize();\n\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( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\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\t// indices\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\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\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path, tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\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\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\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}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tif ( geometry.isGeometry === true ) {\n\n\t\t\tconsole.error( 'THREE.WireframeGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\n\t\t// helper variables\n\n\t\tconst edge = [ 0, 0 ], edges = {};\n\n\t\tconst 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\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\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\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 * 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 * 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 * ior: ,\n *\n * sheen: ,\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( )\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\tObject.defineProperty( this, 'ior', {\n\t\tget: function () {\n\n\t\t\treturn ( 1 + 0.4 * this.reflectivity ) / ( 1 - 0.4 * this.reflectivity );\n\n\t\t},\n\t\tset: function ( ior ) {\n\n\t\t\tthis.reflectivity = MathUtils.clamp( 2.5 * ( ior - 1 ) / ( ior + 1 ), 0, 1 );\n\n\t\t}\n\t} );\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transmission = 0.0;\n\tthis.transmissionMap = null;\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.transmission = source.transmission;\n\tthis.transmissionMap = source.transmissionMap;\n\n\treturn this;\n\n};\n\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 * 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 * 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 * 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 * 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 * 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\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 = 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 = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.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\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\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\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\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 * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\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\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\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().fromArray( referenceValue ).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 * targetValueSize + targetOffset;\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\tconst valueEnd = targetValueSize - targetOffset * 2;\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 < valueEnd; ++ 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 */\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\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\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\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\tconst pp = this.parameterPositions;\n\t\tlet iPrev = 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\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\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\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 !== times[ 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 * A Track of Boolean keyframe values.\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 * A Track of keyframe values that represent color.\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 * A Track of numeric keyframe values.\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\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 * A Track of quaternion keyframe values.\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 * A Track that interpolates Strings\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 * A Track of vectored keyframe values.\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\nfunction AnimationClip( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = duration;\n\tthis.blendMode = blendMode;\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\tconst clip = new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\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\ttoJSON: function () {\n\n\t\treturn AnimationClip.toJSON( this );\n\n\t}\n\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\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\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.withCredentials = false;\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\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\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\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\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\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.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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 * 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\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\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\ttexture.image = images;\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\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\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 * 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.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\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.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\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\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 * 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\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 = 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 = 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;\n\t\tconst 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 * 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 = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points;\n\tthis.closed = closed;\n\tthis.curveType = curveType;\n\tthis.tension = tension;\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 = new Vector3() ) {\n\n\tconst point = optionalTarget;\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, p3; // 4 points (p1 & p2 defined below)\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\tconst p1 = points[ intPoint % l ];\n\tconst p2 = 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 * 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 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\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 = new Vector2() ) {\n\n\tconst point = optionalTarget;\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 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\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 = new Vector3() ) {\n\n\tconst point = optionalTarget;\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 = new Vector2(), v2 = new Vector2() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\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 = new Vector2() ) {\n\n\tconst point = optionalTarget;\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 = new Vector3(), v2 = new Vector3() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\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 = new Vector3() ) {\n\n\tconst point = optionalTarget;\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 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\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 = new Vector2() ) {\n\n\tconst point = optionalTarget;\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 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\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 = new Vector3() ) {\n\n\tconst point = optionalTarget;\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 = [] ) {\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 = new Vector2() ) {\n\n\tconst point = optionalTarget;\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 *\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\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\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\nfunction Light( color, intensity = 1 ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity;\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\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\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\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\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\tthis.focus = 1;\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 * this.focus;\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\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 = 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\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\nfunction OrthographicCamera( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = near;\n\tthis.far = far;\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.copy( this.projectionMatrix ).invert();\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\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\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\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\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 * 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\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isSphericalHarmonics3', { value: true } );\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( 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() {\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( 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( 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( 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( 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( 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( 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( 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( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( 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\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\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.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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 !== 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 !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.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\t\t\t\t\t\tbreak;\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\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\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\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\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\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\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.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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 = getTypedArray( 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 = getTypedArray( 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 = getTypedArray( 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 = getTypedArray( 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\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\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( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( 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, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( 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\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\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 skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( 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\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( 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( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( 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\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\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 deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\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\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\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 images;\n\n\t}\n\n\tparseTextures( 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\t\t\t\tconst image = images[ data.image ];\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( image );\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture( image.data, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\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( data, geometries, materials, animations ) {\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\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\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 ) );\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\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\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, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\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\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( 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\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\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\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\n\t\tfetch( url, fetchOptions ).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\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;\n\t\tconst 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\nclass Font {\n\n\tconstructor( data ) {\n\n\t\tObject.defineProperty( this, 'isFont', { value: true } );\n\n\t\tthis.type = 'Font';\n\n\t\tthis.data = data;\n\n\t}\n\n\tgenerateShapes( text, 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\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.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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\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\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.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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\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\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\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\nclass Clock {\n\n\tconstructor( autoStart ) {\n\n\t\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\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 = 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\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\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() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( 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() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( 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( force ) {\n\n\t\tsuper.updateMatrixWorld( 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\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( 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( 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( 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( 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( 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() {\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() {\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() {\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\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\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\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( 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() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( 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() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\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( 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( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( 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\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( 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( force ) {\n\n\t\tsuper.updateMatrixWorld( 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\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\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\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 * this.valueSize + 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// 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\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = 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\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\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\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\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = 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\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\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() {\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() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( 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( 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() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( 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( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst 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( 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() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( 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( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( 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() {\n\n\t\tconst 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() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( 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( 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( 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( 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( 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( 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\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\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = 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\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\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\nfunction GLBufferAttribute( buffer, type, itemSize, elementSize, count ) {\n\n\tthis.buffer = buffer;\n\tthis.type = type;\n\tthis.itemSize = itemSize;\n\tthis.elementSize = elementSize;\n\tthis.count = count;\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( GLBufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( GLBufferAttribute.prototype, {\n\n\tisGLBufferAttribute: true,\n\n\tsetBuffer: function ( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t},\n\n\tsetType: function ( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t},\n\n\tsetItemSize: function ( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t},\n\n\tsetCount: function ( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t},\n\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: ' + 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 * 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\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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() {\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( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( 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 * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius, theta, y ) {\n\n\t\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( 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\nconst _vector$8 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min, max ) {\n\n\t\tObject.defineProperty( this, 'isBox2', { value: true } );\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$8.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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( 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( 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( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\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( 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( 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( point ) {\n\n\t\tconst clampedPoint = _vector$8.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start, end ) {\n\n\t\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\t\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n\t}\n\n\tset( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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( 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( 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() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( 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( 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( 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( 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( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\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\nconst _vector$9 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$9.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$9 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$a.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$a.x, _vector$a.y, _vector$a.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$a.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$a.x, _vector$a.y, _vector$a.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\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\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\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\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$b.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1$6.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3$1.subVectors( _v2$3, _v1$6 );\n\n\t\tthis.lightPlane.lookAt( _v2$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2$3 );\n\t\tthis.targetLine.scale.z = _v3$1.length();\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\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\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$c.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$c.x, _vector$c.y, _vector$c.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\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\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box$3.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box$3.isEmpty() ) return;\n\n\t\tconst min = _box$3.min;\n\t\tconst max = _box$3.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\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\t\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\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\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\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\tconstructor( dir, origin, length, color, headLength, headWidth ) {\n\n\t\tsuper();\n\t\t// dir is assumed to be normalized\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\t\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\t\tif ( length === undefined ) length = 1;\n\t\tif ( color === undefined ) color = 0xffff00;\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength, headWidth ) {\n\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n}\n\nconst _floatView = new Float32Array( 1 );\nconst _int32View = new Int32Array( _floatView.buffer );\n\nconst DataUtils = {\n\n\t// Converts float32 to float16 (stored as uint16 value).\n\n\ttoHalfFloat: function ( val ) {\n\n\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\n\n\t\t/* This method is faster than the OpenEXR implementation (very often\n\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\n\t\t* by James Tursa?s half-precision code. */\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst x = _int32View[ 0 ];\n\n\t\tlet bits = ( x >> 16 ) & 0x8000; /* Get the sign */\n\t\tlet m = ( x >> 12 ) & 0x07ff; /* Keep one extra bit for rounding */\n\t\tconst e = ( x >> 23 ) & 0xff; /* Using int is faster here */\n\n\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\n\t\t\t* half, return signed zero. */\n\t\tif ( e < 103 ) return bits;\n\n\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\t\tif ( e > 142 ) {\n\n\t\t\tbits |= 0x7c00;\n\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\n\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\n\t\t\tbits |= ( ( e == 255 ) ? 0 : 1 ) && ( x & 0x007fffff );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\t/* If exponent underflows but not too much, return a denormal */\n\t\tif ( e < 113 ) {\n\n\t\t\tm |= 0x0800;\n\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\n\t\t\t\t* to 1, which is OK. */\n\t\t\tbits |= ( m >> ( 114 - e ) ) + ( ( m >> ( 113 - e ) ) & 1 );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\tbits |= ( ( e - 112 ) << 10 ) | ( m >> 1 );\n\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\n\t\t\t* the exponent, which is OK. */\n\t\tbits += m & 1;\n\t\treturn bits;\n\n\t}\n\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 backgroundMaterial = new MeshBasicMaterial( {\n\tside: BackSide,\n\tdepthWrite: false,\n\tdepthTest: false,\n} );\nconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();\nconst _clearColor = /*@__PURE__*/ new Color();\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\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\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\nfunction convertLinearToRGBE( color ) {\n\n\tconst maxComponent = Math.max( color.r, color.g, color.b );\n\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\tcolor.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\n\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\treturn alpha;\n\n}\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\t\tthis._equirectShader = null;\n\t\tthis._cubemapShader = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\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( 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( 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( 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() {\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() {\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() {\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( 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( 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( 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};\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( 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( 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 originalAutoClear = renderer.autoClear;\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\t\trenderer.autoClear = false;\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background ).convertSRGBToLinear();\n\t\t\t\tscene.background = null;\n\n\t\t\t\tconst alpha = convertLinearToRGBE( backgroundMaterial.color );\n\t\t\t\tbackgroundMaterial.opacity = alpha;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor ).convertSRGBToLinear();\n\n\t\t\tconst alpha = convertLinearToRGBE( backgroundMaterial.color );\n\t\t\tbackgroundMaterial.opacity = alpha;\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\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\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\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.autoClear = originalAutoClear;\n\n\t}\n\n\t_textureToCubeUV( 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( 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( 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( 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: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\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: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\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: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\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 /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\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\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( 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\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\tgetInverse: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\t\treturn this.copy( matrix ).invert();\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\tgetInverse: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\t\treturn this.copy( matrix ).invert();\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\nObject.assign( Quaternion.prototype, {\n\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\treturn vector.applyQuaternion( this );\n\n\t},\n\tinverse: function ( ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\t\treturn this.invert();\n\n\t}\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( 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\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( ExtrudeGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Scene.prototype, {\n\n\tdispose: function () {\n\n\t\tconsole.error( 'THREE.Scene: .dispose() 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( MeshPhysicalMaterial.prototype, {\n\n\ttransparency: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\treturn this.transmission;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\tthis.transmission = value;\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\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\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\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\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, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as 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, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, 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, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry as ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as 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, RingGeometry as 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, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry as TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as 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","var $config = Symbol.for('FluidValue:config');\nexport { hasFluidValue, getFluidValue, getFluidConfig, setFluidConfig, addFluidObserver, };\n/** Does the given value have a `FluidConfig` object? */\nvar hasFluidValue = function (arg) { return !!getFluidConfig(arg); };\nfunction getFluidValue(arg) {\n var config = getFluidConfig(arg);\n return config ? config.get() : arg;\n}\nfunction getFluidConfig(arg) {\n if (arg)\n return arg[$config];\n}\n/** Set the methods for observing the given object. */\nfunction setFluidConfig(target, config) {\n Object.defineProperty(target, $config, {\n value: config,\n configurable: true,\n });\n}\nfunction addFluidObserver(target, observer) {\n var config = getFluidConfig(target);\n if (config) {\n config.addChild(observer);\n return function () { return config.removeChild(observer); };\n }\n}\n/**\n * This class stores a single dynamic value, which can be observed by multiple `FluidObserver` objects.\n *\n * In order to support non-writable streams, this class doesn't expect a `set` method to exist.\n *\n * It can send *any* event to observers, not only change events.\n */\nvar FluidValue = /** @class */ (function () {\n function FluidValue() {\n setFluidConfig(this, this);\n }\n return FluidValue;\n}());\nexport { FluidValue };\n//# sourceMappingURL=index.js.map","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined;\n\nvar _flattenNames = require('./flattenNames');\n\nvar _flattenNames2 = _interopRequireDefault(_flattenNames);\n\nvar _mergeClasses = require('./mergeClasses');\n\nvar _mergeClasses2 = _interopRequireDefault(_mergeClasses);\n\nvar _autoprefix = require('./autoprefix');\n\nvar _autoprefix2 = _interopRequireDefault(_autoprefix);\n\nvar _hover2 = require('./components/hover');\n\nvar _hover3 = _interopRequireDefault(_hover2);\n\nvar _active = require('./components/active');\n\nvar _active2 = _interopRequireDefault(_active);\n\nvar _loop2 = require('./loop');\n\nvar _loop3 = _interopRequireDefault(_loop2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.hover = _hover3.default;\nexports.handleHover = _hover3.default;\nexports.handleActive = _active2.default;\nexports.loop = _loop3.default;\nvar ReactCSS = exports.ReactCSS = function ReactCSS(classes) {\n for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n activations[_key - 1] = arguments[_key];\n }\n\n var activeNames = (0, _flattenNames2.default)(activations);\n var merged = (0, _mergeClasses2.default)(classes, activeNames);\n return (0, _autoprefix2.default)(merged);\n};\n\nexports.default = ReactCSS;","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}","import setPrototypeOf from \"@babel/runtime/helpers/esm/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 getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\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 _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}","import { FluidValue } from 'fluids'\n\nimport { OneOrMore } from './types.util'\nimport { InterpolatorConfig, InterpolatorArgs } from './types'\nimport { FrameLoop, OpaqueAnimation } from './FrameLoop'\nimport { noop } from './helpers'\n\n//\n// Required\n//\n\nexport let createStringInterpolator: (\n config: InterpolatorConfig\n) => (input: number) => string\n\nexport let frameLoop = new FrameLoop()\n\n//\n// Optional\n//\n\nexport let to: (\n source: OneOrMore,\n args: InterpolatorArgs\n) => FluidValue\n\ndeclare const performance: { now: () => number }\n\nexport let now = () => performance.now()\n\nexport let colorNames = null as { [key: string]: number } | null\n\nexport let skipAnimation = false as boolean\n\ndeclare const window: {\n requestAnimationFrame: (cb: (time: number) => void) => number\n}\n\nexport let requestAnimationFrame: (cb: (time: number) => void) => void =\n typeof window !== 'undefined' ? window.requestAnimationFrame : () => -1\n\nexport let batchedUpdates = (callback: () => void) => callback()\n\nexport let willAdvance: (animations: OpaqueAnimation[]) => void = noop\n\n//\n// Configuration\n//\n\nexport interface AnimatedGlobals {\n /** Returns a new `Interpolation` object */\n to?: typeof to\n /** Used to measure frame length. Read more [here](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) */\n now?: typeof now\n /** Provide a custom `FrameLoop` instance */\n frameLoop?: typeof frameLoop\n /** Provide custom color names for interpolation */\n colorNames?: typeof colorNames\n /** Make all animations instant and skip the frameloop entirely */\n skipAnimation?: typeof skipAnimation\n /** Provide custom logic for string interpolation */\n createStringInterpolator?: typeof createStringInterpolator\n /** Schedule a function to run on the next frame */\n requestAnimationFrame?: typeof requestAnimationFrame\n /** Event props are called with `batchedUpdates` to reduce extraneous renders */\n batchedUpdates?: typeof batchedUpdates\n /** @internal Exposed for testing purposes */\n willAdvance?: typeof willAdvance\n}\n\nexport const assign = (globals: AnimatedGlobals): AnimatedGlobals =>\n ({\n to,\n now,\n frameLoop,\n colorNames,\n skipAnimation,\n createStringInterpolator,\n requestAnimationFrame,\n batchedUpdates,\n willAdvance,\n } = Object.assign(\n {\n to,\n now,\n frameLoop,\n colorNames,\n skipAnimation,\n createStringInterpolator,\n requestAnimationFrame,\n batchedUpdates,\n willAdvance,\n },\n pluckDefined(globals)\n ))\n\n// Ignore undefined values\nfunction pluckDefined(globals: any) {\n const defined: any = {}\n for (const key in globals) {\n if (globals[key] !== undefined) defined[key] = globals[key]\n }\n return defined\n}\n","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\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}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _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(Object(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(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\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}","module.exports = require(\"regenerator-runtime\");\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}","import objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\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 arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import { useMemo } from 'react';\nimport deepEqual from 'fast-deep-equal';\n\nconst globalCache = [];\n\nfunction handleAsset(fn, cache, args, lifespan = 0, preload = false) {\n for (const entry of cache) {\n // Find a match\n if (deepEqual(args, entry.args)) {\n // If we're pre-loading and the element is present, just return\n if (preload) return; // If an error occurred, throw\n\n if (entry.error) throw entry.error; // If a response was successful, return\n\n if (entry.response) return entry.response; // If the promise is still unresolved, throw\n\n throw entry.promise;\n }\n } // The request is new or has changed.\n\n\n const entry = {\n args,\n promise: // Make the promise request.\n fn(...args) // Response can't be undefined or else the loop above wouldn't be able to return it\n // This is for promises that do not return results (delays for instance)\n .then(response => entry.response = response != null ? response : true).catch(e => entry.error = e != null ? e : 'unknown error').then(() => {\n if (lifespan > 0) {\n setTimeout(() => {\n const index = cache.indexOf(entry);\n if (index !== -1) cache.splice(index, 1);\n }, lifespan);\n }\n })\n };\n cache.push(entry);\n if (!preload) throw entry.promise;\n}\n\nfunction clear(cache, ...args) {\n if (args === undefined) cache.splice(0, cache.length);else {\n const entry = cache.find(entry => deepEqual(args, entry.args));\n\n if (entry) {\n const index = cache.indexOf(entry);\n if (index !== -1) cache.splice(index, 1);\n }\n }\n}\n\nfunction createAsset(fn, lifespan = 0) {\n const cache = [];\n return {\n /**\n * @throws Suspense Promise if asset is not yet ready\n * @throws Error if the promise rejected for some reason\n */\n read: (...args) => handleAsset(fn, cache, args, lifespan),\n preload: (...args) => void handleAsset(fn, cache, args, lifespan, true),\n clear: (...args) => clear(cache, ...args),\n peek: (...args) => {\n var _cache$find;\n\n return (_cache$find = cache.find(entry => deepEqual(args, entry.args))) == null ? void 0 : _cache$find.response;\n }\n };\n}\n\nfunction useAsset(fn, ...args) {\n return useMemo(() => handleAsset(fn, globalCache, args, useAsset.lifespan), args);\n}\n\nuseAsset.lifespan = 0;\n\nuseAsset.clear = (...args) => clear(globalCache, ...args);\n\nuseAsset.preload = (fn, ...args) => void handleAsset(fn, globalCache, args, useAsset.lifespan, true);\n\nuseAsset.peek = (...args) => {\n var _globalCache$find;\n\n return (_globalCache$find = globalCache.find(entry => deepEqual(args, entry.args))) == null ? void 0 : _globalCache$find.response;\n};\n\nexport { createAsset, useAsset };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as THREE from 'three';\nimport { Layers, Color, Texture, sRGBEncoding, Vector2, Raycaster, Scene, OrthographicCamera, PerspectiveCamera, Clock, Vector3, PCFSoftShadowMap, ACESFilmicToneMapping, WebGL1Renderer, WebGLRenderer } from 'three';\nimport Reconciler from 'react-reconciler';\nimport { unstable_now, unstable_runWithPriority, unstable_IdlePriority } from 'scheduler';\nimport React, { createContext, useState, useRef, useCallback, useMemo, useLayoutEffect, useEffect, createElement, useContext as useContext$1 } from 'react';\nimport { TinyEmitter } from 'tiny-emitter';\nimport { useAsset } from 'use-asset';\nimport useMeasure from 'react-use-measure';\nimport mergeRefs from 'react-merge-refs';\n\nvar name = \"react-three-fiber\";\nvar version = \"5.3.18\";\n\nconst roots = new Map();\nconst emptyObject = {};\nconst is = {\n obj: a => a === Object(a) && !is.arr(a),\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === void 0,\n arr: a => Array.isArray(a),\n\n equ(a, b) {\n // Wrong type or one of the two undefined, doesn't match\n if (typeof a !== typeof b || !!a !== !!b) return false; // Atomic, just compare a against b\n\n if (is.str(a) || is.num(a) || is.obj(a)) return a === b; // Array, shallow compare first to see if it's a match\n\n if (is.arr(a) && a == b) return true; // Last resort, go through keys\n\n let i;\n\n for (i in a) if (!(i in b)) return false;\n\n for (i in b) if (a[i] !== b[i]) return false;\n\n return is.und(i) ? a === b : true;\n }\n\n};\n\nfunction createSubs(callback, subs) {\n const index = subs.length;\n subs.push(callback);\n return () => void subs.splice(index, 1);\n}\n\nlet globalEffects = [];\nlet globalAfterEffects = [];\nlet globalTailEffects = [];\nconst addEffect = callback => createSubs(callback, globalEffects);\nconst addAfterEffect = callback => createSubs(callback, globalAfterEffects);\nconst addTail = callback => createSubs(callback, globalTailEffects);\nfunction renderGl(state, timestamp, repeat = 0, runGlobalEffects = false) {\n let i; // Run global effects\n\n if (runGlobalEffects) {\n for (i = 0; i < globalEffects.length; i++) {\n globalEffects[i](timestamp);\n repeat++;\n }\n } // Run local effects\n\n\n const delta = state.current.clock.getDelta();\n\n for (i = 0; i < state.current.subscribers.length; i++) {\n state.current.subscribers[i].ref.current(state.current, delta);\n } // Decrease frame count\n\n\n state.current.frames = Math.max(0, state.current.frames - 1);\n repeat += !state.current.invalidateFrameloop ? 1 : state.current.frames; // Render content\n\n if (!state.current.manual && state.current.gl.render) state.current.gl.render(state.current.scene, state.current.camera); // Run global after-effects\n\n if (runGlobalEffects) {\n for (i = 0; i < globalAfterEffects.length; i++) {\n globalAfterEffects[i](timestamp);\n }\n }\n\n return repeat;\n}\nlet running = false;\n\nfunction renderLoop(timestamp) {\n running = true;\n let repeat = 0;\n let i; // Run global effects\n\n for (i = 0; i < globalEffects.length; i++) {\n globalEffects[i](timestamp);\n repeat++;\n }\n\n roots.forEach(root => {\n const state = root.containerInfo.__state; // If the frameloop is invalidated, do not run another frame\n\n if (state.current.active && state.current.ready && (!state.current.invalidateFrameloop || state.current.frames > 0)) {\n repeat = renderGl(state, timestamp, repeat);\n } else {\n repeat = 0;\n }\n }); // Run global after-effects\n\n for (i = 0; i < globalAfterEffects.length; i++) {\n globalAfterEffects[i](timestamp);\n }\n\n if (repeat !== 0) {\n return requestAnimationFrame(renderLoop);\n } else {\n // Tail call effects, they are called when rendering stops\n for (i = 0; i < globalTailEffects.length; i++) {\n globalTailEffects[i](timestamp);\n }\n } // Flag end of operation\n\n\n running = false;\n}\n\nfunction invalidate(state = true, frames = 1) {\n if (state === true) {\n roots.forEach(root => {\n const state = root.containerInfo.__state;\n state.current.frames = state.current.ready ? state.current.frames + frames : frames;\n });\n } else if (state && state.current) {\n if (state.current.vr) return;\n state.current.frames = state.current.ready ? state.current.frames + frames : frames;\n }\n\n if (!running) {\n running = true;\n requestAnimationFrame(renderLoop);\n }\n}\nfunction forceResize() {\n roots.forEach(root => root.containerInfo.__state.current.forceResize());\n}\nlet catalogue = {};\nconst extend = objects => void (catalogue = { ...catalogue,\n ...objects\n});\nfunction applyProps(instance, newProps, oldProps = {}, accumulative = false) {\n // Filter equals, events and reserved props\n const container = instance.__container;\n const sameProps = [];\n const handlers = [];\n let i;\n let keys = Object.keys(newProps);\n\n for (i = 0; i < keys.length; i++) {\n if (is.equ(newProps[keys[i]], oldProps[keys[i]])) {\n sameProps.push(keys[i]);\n } // Event-handlers ...\n // are functions, that\n // start with \"on\", and\n // contain the name \"Pointer\", \"Click\", \"ContextMenu\", or \"Wheel\"\n\n\n if (is.fun(newProps[keys[i]]) && keys[i].startsWith('on')) {\n if (keys[i].includes('Pointer') || keys[i].includes('Click') || keys[i].includes('ContextMenu') || keys[i].includes('Wheel')) {\n handlers.push(keys[i]);\n }\n }\n }\n\n const leftOvers = [];\n keys = Object.keys(oldProps);\n\n if (accumulative) {\n for (i = 0; i < keys.length; i++) {\n if (newProps[keys[i]] === void 0) {\n leftOvers.push(keys[i]);\n }\n }\n }\n\n const toFilter = [...sameProps, 'children', 'key', 'ref']; // Instances use \"object\" as a reserved identifier\n\n if (instance.__instance) toFilter.push('object');\n const filteredProps = { ...newProps\n }; // Removes sameProps and reserved props from newProps\n\n keys = Object.keys(filteredProps);\n\n for (i = 0; i < keys.length; i++) {\n if (toFilter.indexOf(keys[i]) > -1) {\n delete filteredProps[keys[i]];\n }\n } // Add left-overs as undefined props so they can be removed\n\n\n keys = Object.keys(leftOvers);\n\n for (i = 0; i < keys.length; i++) {\n if (keys[i] !== 'children') {\n filteredProps[keys[i]] = undefined;\n }\n }\n\n const filteredPropsEntries = Object.entries(filteredProps);\n\n if (filteredPropsEntries.length > 0) {\n filteredPropsEntries.forEach(([key, value]) => {\n if (!handlers.includes(key)) {\n var _instance$__container, _instance$__container2;\n\n let root = instance;\n let target = root[key];\n\n if (key.includes('-')) {\n const entries = key.split('-');\n target = entries.reduce((acc, key) => acc[key], instance); // If the target is atomic, it forces us to switch the root\n\n if (!(target && target.set)) {\n const [name, ...reverseEntries] = entries.reverse();\n root = reverseEntries.reverse().reduce((acc, key) => acc[key], instance);\n key = name;\n }\n } // Special treatment for objects with support for set/copy\n\n\n const isColorManagement = (_instance$__container = instance.__container) == null ? void 0 : (_instance$__container2 = _instance$__container.__state) == null ? void 0 : _instance$__container2.current.colorManagement;\n\n if (target && target.set && (target.copy || target instanceof Layers)) {\n // If value is an array it has got to be the set function\n if (Array.isArray(value)) {\n target.set(...value);\n } // Test again target.copy(class) next ...\n else if (target.copy && value && value.constructor && target.constructor.name === value.constructor.name) {\n target.copy(value);\n } // If nothing else fits, just set the single value, ignore undefined\n // https://github.com/react-spring/react-three-fiber/issues/274\n else if (value !== undefined) {\n target.set(value); // Auto-convert sRGB colors, for now ...\n // https://github.com/react-spring/react-three-fiber/issues/344\n\n if (isColorManagement && target instanceof Color) {\n target.convertSRGBToLinear();\n }\n } // Else, just overwrite the value\n\n } else {\n root[key] = value; // Auto-convert sRGB textures, for now ...\n // https://github.com/react-spring/react-three-fiber/issues/344\n\n if (isColorManagement && root[key] instanceof Texture) {\n root[key].encoding = sRGBEncoding;\n }\n }\n\n invalidateInstance(instance);\n }\n }); // Preemptively delete the instance from the containers interaction\n\n if (accumulative && container && instance.raycast && instance.__handlers) {\n instance.__handlers = undefined;\n\n const index = container.__interaction.indexOf(instance);\n\n if (index > -1) container.__interaction.splice(index, 1);\n } // Prep interaction handlers\n\n\n if (handlers.length) {\n if (accumulative && container && instance.raycast) container.__interaction.push(instance); // Add handlers to the instances handler-map\n\n instance.__handlers = handlers.reduce((acc, key) => {\n acc[key.charAt(2).toLowerCase() + key.substr(3)] = newProps[key];\n return acc;\n }, {});\n } // Call the update lifecycle when it is being updated, but only when it is part of the scene\n\n\n if (instance.parent) updateInstance(instance);\n }\n}\n\nfunction invalidateInstance(instance) {\n if (instance.__container && instance.__container.__state) invalidate(instance.__container.__state);\n}\n\nfunction updateInstance(instance) {\n if (instance.onUpdate) instance.onUpdate(instance);\n}\n\nfunction createInstance(type, {\n args = [],\n ...props\n}, container, hostContext, internalInstanceHandle) {\n let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n let instance;\n\n if (type === 'primitive') {\n // Switch off dispose for primitive objects\n props = {\n dispose: null,\n ...props\n };\n instance = props.object;\n instance.__instance = true;\n instance.__dispose = instance.dispose;\n } else {\n const target = catalogue[name] || THREE[name];\n\n if (!target) {\n throw `\"${name}\" is not part of the THREE namespace! Did you forget to extend it? See: https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#using-3rd-party-objects-declaratively`;\n }\n\n instance = is.arr(args) ? new target(...args) : new target(args);\n } // Bind to the root container in case portals are being used\n // This is perhaps better for event management as we can keep them on a single instance\n\n\n while (container.__container) {\n container = container.__container;\n } // TODO: https://github.com/facebook/react/issues/17147\n // If it's still not there it means the portal was created on a virtual node outside of react\n\n\n if (!roots.has(container)) {\n const fn = node => {\n if (!node.return) return node.stateNode && node.stateNode.containerInfo;else return fn(node.return);\n };\n\n container = fn(internalInstanceHandle);\n } // Apply initial props\n\n\n instance.__objects = [];\n instance.__container = container; // Auto-attach geometries and materials\n\n if (name.endsWith('Geometry')) {\n props = {\n attach: 'geometry',\n ...props\n };\n } else if (name.endsWith('Material')) {\n props = {\n attach: 'material',\n ...props\n };\n } // It should NOT call onUpdate on object instanciation, because it hasn't been added to the\n // view yet. If the callback relies on references for instance, they won't be ready yet, this is\n // why it passes \"true\" here\n\n\n applyProps(instance, props, {});\n return instance;\n}\n\nfunction appendChild(parentInstance, child) {\n if (child) {\n if (child.isObject3D) {\n parentInstance.add(child);\n } else {\n parentInstance.__objects.push(child);\n\n child.parent = parentInstance; // The attach attribute implies that the object attaches itself on the parent\n\n if (child.attachArray) {\n if (!is.arr(parentInstance[child.attachArray])) parentInstance[child.attachArray] = [];\n parentInstance[child.attachArray].push(child);\n } else if (child.attachObject) {\n if (!is.obj(parentInstance[child.attachObject[0]])) parentInstance[child.attachObject[0]] = {};\n parentInstance[child.attachObject[0]][child.attachObject[1]] = child;\n } else if (child.attach) {\n parentInstance[child.attach] = child;\n }\n }\n\n updateInstance(child);\n invalidateInstance(child);\n }\n}\n\nfunction insertBefore(parentInstance, child, beforeChild) {\n if (child) {\n if (child.isObject3D) {\n child.parent = parentInstance;\n child.dispatchEvent({\n type: 'added'\n });\n const restSiblings = parentInstance.children.filter(sibling => sibling !== child); // TODO: the order is out of whack if data objects are present, has to be recalculated\n\n const index = restSiblings.indexOf(beforeChild);\n parentInstance.children = [...restSiblings.slice(0, index), child, ...restSiblings.slice(index)];\n updateInstance(child);\n } else {\n appendChild(parentInstance, child);\n } // TODO: order!!!\n\n\n invalidateInstance(child);\n }\n}\n\nfunction removeRecursive(array, parent, clone = false) {\n if (array) {\n // Three uses splice op's internally we may have to shallow-clone the array in order to safely remove items\n const target = clone ? [...array] : array;\n target.forEach(child => removeChild(parent, child));\n }\n}\n\nfunction removeChild(parentInstance, child) {\n if (child) {\n if (child.isObject3D) {\n parentInstance.remove(child);\n } else {\n child.parent = null;\n if (parentInstance.__objects) parentInstance.__objects = parentInstance.__objects.filter(x => x !== child); // Remove attachment\n\n if (child.attachArray) {\n parentInstance[child.attachArray] = parentInstance[child.attachArray].filter(x => x !== child);\n } else if (child.attachObject) {\n delete parentInstance[child.attachObject[0]][child.attachObject[1]];\n } else if (child.attach) {\n parentInstance[child.attach] = null;\n }\n } // Remove interactivity\n\n\n if (child.__container) child.__container.__interaction = child.__container.__interaction.filter(x => x !== child);\n invalidateInstance(child); // Allow objects to bail out of recursive dispose alltogether by passing dispose={null}\n\n if (child.dispose !== null) {\n unstable_runWithPriority(unstable_IdlePriority, () => {\n // Remove nested child objects\n removeRecursive(child.__objects, child);\n removeRecursive(child.children, child, true); // Dispose item\n\n if (child.dispose && child.type !== 'Scene') child.dispose();else if (child.__dispose) child.__dispose(); // Remove references\n\n delete child.__container;\n delete child.__objects;\n });\n }\n }\n}\n\nfunction switchInstance(instance, type, newProps, fiber) {\n const parent = instance.parent;\n const newInstance = createInstance(type, newProps, instance.__container, null, fiber);\n removeChild(parent, instance);\n appendChild(parent, newInstance) // This evil hack switches the react-internal fiber node\n // https://github.com/facebook/react/issues/14983\n // https://github.com/facebook/react/pull/15021\n ;\n [fiber, fiber.alternate].forEach(fiber => {\n if (fiber !== null) {\n fiber.stateNode = newInstance;\n\n if (fiber.ref) {\n if (is.fun(fiber.ref)) fiber.ref(newInstance);else fiber.ref.current = newInstance;\n }\n }\n });\n}\n\nconst Renderer = Reconciler({\n now: unstable_now,\n createInstance,\n removeChild,\n appendChild,\n insertBefore,\n warnsIfNotActing: true,\n supportsMutation: true,\n isPrimaryRenderer: false,\n scheduleTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n cancelTimeout: is.fun(clearTimeout) ? clearTimeout : undefined,\n // @ts-ignore\n setTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n // @ts-ignore\n clearTimeout: is.fun(clearTimeout) ? clearTimeout : undefined,\n noTimeout: -1,\n appendInitialChild: appendChild,\n appendChildToContainer: appendChild,\n removeChildFromContainer: removeChild,\n insertInContainerBefore: insertBefore,\n\n commitUpdate(instance, updatePayload, type, oldProps, newProps, fiber) {\n if (instance.__instance && newProps.object && newProps.object !== instance) {\n // where the object reference has changed\n switchInstance(instance, type, newProps, fiber);\n } else {\n // This is a data object, let's extract critical information about it\n const {\n args: argsNew = [],\n ...restNew\n } = newProps;\n const {\n args: argsOld = [],\n ...restOld\n } = oldProps; // If it has new props or arguments, then it needs to be re-instanciated\n\n const hasNewArgs = argsNew.some((value, index) => is.obj(value) ? Object.entries(value).some(([key, val]) => val !== argsOld[index][key]) : value !== argsOld[index]);\n\n if (hasNewArgs) {\n // Next we create a new instance and append it again\n switchInstance(instance, type, newProps, fiber);\n } else {\n // Otherwise just overwrite props\n applyProps(instance, restNew, restOld, true);\n }\n }\n },\n\n hideInstance(instance) {\n if (instance.isObject3D) {\n instance.visible = false;\n invalidateInstance(instance);\n }\n },\n\n unhideInstance(instance, props) {\n if (instance.isObject3D && props.visible == null || props.visible) {\n instance.visible = true;\n invalidateInstance(instance);\n }\n },\n\n hideTextInstance() {\n throw new Error('Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.');\n },\n\n getPublicInstance(instance) {\n return instance;\n },\n\n getRootHostContext() {\n return emptyObject;\n },\n\n getChildHostContext() {\n return emptyObject;\n },\n\n createTextInstance() {},\n\n finalizeInitialChildren(instance) {\n // https://github.com/facebook/react/issues/20271\n // Returning true will trigger commitMount\n return instance.__handlers;\n },\n\n commitMount(instance)\n /*, type, props*/\n {\n // https://github.com/facebook/react/issues/20271\n // This will make sure events are only added once to the central container\n const container = instance.__container;\n if (container && instance.raycast && instance.__handlers) container.__interaction.push(instance);\n },\n\n prepareUpdate() {\n return emptyObject;\n },\n\n shouldDeprioritizeSubtree() {\n return false;\n },\n\n prepareForCommit() {\n return null;\n },\n\n preparePortalMount() {\n return null;\n },\n\n resetAfterCommit() {},\n\n shouldSetTextContent() {\n return false;\n },\n\n clearContainer() {\n return false;\n }\n\n});\nconst hasSymbol = is.fun(Symbol) && Symbol.for;\nconst REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nfunction render(element, container, state) {\n let root = roots.get(container);\n\n if (!root) {\n container.__state = state; // @ts-ignore\n\n let newRoot = root = Renderer.createContainer(container, state !== undefined && state.current.concurrent ? 2 : 0, false, // @ts-ignore\n null);\n roots.set(container, newRoot);\n }\n\n Renderer.updateContainer(element, root, null, () => undefined);\n return Renderer.getPublicRootInstance(root);\n}\nfunction unmountComponentAtNode(container, callback) {\n const root = roots.get(container);\n\n if (root) {\n Renderer.updateContainer(null, root, null, () => {\n roots.delete(container);\n if (callback) callback(container);\n });\n }\n}\nfunction createPortal(children, containerInfo, implementation, key = null) {\n if (!containerInfo.__objects) containerInfo.__objects = [];\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: key == null ? null : '' + key,\n children,\n containerInfo,\n implementation\n };\n}\nRenderer.injectIntoDevTools({\n bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,\n //@ts-ignore\n findHostInstanceByFiber: () => null,\n version: version,\n rendererPackageName: name\n});\n\nvar threeTypes = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nfunction isOrthographicCamera(def) {\n return def.isOrthographicCamera;\n}\n\nfunction makeId(event) {\n return (event.eventObject || event.object).uuid + '/' + event.index;\n}\n\nconst stateContext = /*#__PURE__*/createContext({});\nconst useCanvas = props => {\n const {\n children,\n gl,\n camera,\n orthographic,\n raycaster,\n size,\n pixelRatio,\n vr = false,\n concurrent = false,\n shadowMap = false,\n colorManagement = true,\n invalidateFrameloop = false,\n updateDefaultCamera = true,\n noEvents = false,\n onCreated,\n onPointerMissed,\n forceResize\n } = props; // Local, reactive state\n\n const [ready, setReady] = useState(false);\n const [mouse] = useState(() => new Vector2());\n const [defaultRaycaster] = useState(() => {\n const ray = new Raycaster();\n\n if (raycaster) {\n const {\n filter,\n computeOffsets,\n ...raycasterProps\n } = raycaster;\n applyProps(ray, raycasterProps, {});\n }\n\n return ray;\n });\n const [defaultScene] = useState(() => {\n const scene = new Scene();\n scene.__interaction = [];\n scene.__objects = [];\n return scene;\n });\n const [defaultCam, setDefaultCamera] = useState(() => {\n const cam = orthographic ? new OrthographicCamera(0, 0, 0, 0, 0.1, 1000) : new PerspectiveCamera(75, 0, 0.1, 1000);\n cam.position.z = 5;\n if (camera) applyProps(cam, camera, {}); // Always look at [0, 0, 0]\n\n cam.lookAt(0, 0, 0);\n return cam;\n });\n const [clock] = useState(() => new Clock()); // Public state\n\n const state = useRef({\n ready: false,\n active: true,\n manual: 0,\n colorManagement,\n vr,\n concurrent,\n noEvents,\n invalidateFrameloop: false,\n frames: 0,\n aspect: 0,\n subscribers: [],\n camera: defaultCam,\n scene: defaultScene,\n raycaster: defaultRaycaster,\n mouse,\n clock,\n gl,\n size,\n viewport: null,\n initialClick: [0, 0],\n initialHits: [],\n pointer: new TinyEmitter(),\n captured: undefined,\n events: undefined,\n subscribe: (ref, priority = 0) => {\n // If this subscription was given a priority, it takes rendering into its own hands\n // For that reason we switch off automatic rendering and increase the manual flag\n // As long as this flag is positive (there could be multiple render subscription)\n // ..there can be no internal rendering at all\n if (priority) state.current.manual++;\n state.current.subscribers.push({\n ref,\n priority: priority\n }); // Sort layers from lowest to highest, meaning, highest priority renders last (on top of the other frames)\n\n state.current.subscribers = state.current.subscribers.sort((a, b) => a.priority - b.priority);\n return () => {\n var _state$current;\n\n if ((_state$current = state.current) == null ? void 0 : _state$current.subscribers) {\n // Decrease manual flag if this subscription had a priority\n if (priority) state.current.manual--;\n state.current.subscribers = state.current.subscribers.filter(s => s.ref !== ref);\n }\n };\n },\n setDefaultCamera: camera => setDefaultCamera(camera),\n invalidate: () => invalidate(state),\n intersect: (event = {}, prepare = true) => handlePointerMove(event, prepare),\n forceResize\n });\n const position = new Vector3();\n const getCurrentViewport = useCallback((camera = state.current.camera, target = new Vector3(0, 0, 0)) => {\n const {\n width,\n height\n } = state.current.size;\n const distance = camera.getWorldPosition(position).distanceTo(target);\n\n if (isOrthographicCamera(camera)) {\n return {\n width: width / camera.zoom,\n height: height / camera.zoom,\n factor: 1,\n distance\n };\n } else {\n const fov = camera.fov * Math.PI / 180; // convert vertical fov to radians\n\n const h = 2 * Math.tan(fov / 2) * distance; // visible height\n\n const w = h * (width / height);\n return {\n width: w,\n height: h,\n factor: width / w,\n distance\n };\n }\n }, []); // Writes locals into public state for distribution among subscribers, context, etc\n\n useMemo(() => {\n state.current.ready = ready;\n state.current.size = size;\n state.current.camera = defaultCam;\n state.current.invalidateFrameloop = invalidateFrameloop;\n state.current.vr = vr;\n state.current.gl = gl;\n state.current.concurrent = concurrent;\n state.current.noEvents = noEvents; // Make viewport backwards compatible\n\n state.current.viewport = getCurrentViewport; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [invalidateFrameloop, vr, concurrent, noEvents, ready, size, defaultCam, gl]); // Adjusts default camera\n\n useMemo(() => {\n state.current.aspect = size.width / size.height; // Assign viewport props to the function\n\n Object.assign(state.current.viewport, getCurrentViewport()); // https://github.com/drcmda/react-three-fiber/issues/92\n // Sometimes automatic default camera adjustment isn't wanted behaviour\n\n if (updateDefaultCamera) {\n if (isOrthographicCamera(defaultCam)) {\n defaultCam.left = size.width / -2;\n defaultCam.right = size.width / 2;\n defaultCam.top = size.height / 2;\n defaultCam.bottom = size.height / -2;\n } else {\n defaultCam.aspect = state.current.aspect;\n }\n\n defaultCam.updateProjectionMatrix(); // https://github.com/react-spring/react-three-fiber/issues/178\n // Update matrix world since the renderer is a frame late\n\n defaultCam.updateMatrixWorld();\n }\n\n gl.setSize(size.width, size.height);\n if (ready) invalidate(state); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultCam, gl, size, updateDefaultCamera, ready]); // Only trigger the context provider when necessary\n\n const sharedState = useRef(null);\n useMemo(() => {\n const {\n ready,\n manual,\n vr,\n noEvents,\n invalidateFrameloop,\n frames,\n subscribers,\n captured,\n initialClick,\n initialHits,\n ...props\n } = state.current;\n sharedState.current = props; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [size, defaultCam]); // Update pixel ratio\n\n useLayoutEffect(() => {\n if (pixelRatio) {\n if (Array.isArray(pixelRatio)) gl.setPixelRatio(Math.max(Math.min(pixelRatio[0], window.devicePixelRatio), pixelRatio[1]));else gl.setPixelRatio(pixelRatio);\n }\n }, [gl, pixelRatio]); // Update shadow map\n\n useLayoutEffect(() => {\n if (shadowMap) {\n gl.shadowMap.enabled = true;\n if (typeof shadowMap === 'object') Object.assign(gl.shadowMap, shadowMap);else gl.shadowMap.type = PCFSoftShadowMap;\n }\n\n if (colorManagement) {\n gl.toneMapping = ACESFilmicToneMapping;\n gl.outputEncoding = sRGBEncoding;\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [shadowMap, colorManagement]);\n /** Events ------------------------------------------------------------------------------------------------ */\n\n const hovered = useMemo(() => new Map(), []);\n const temp = new Vector3();\n /** Sets up defaultRaycaster */\n\n const prepareRay = useCallback(event => {\n // https://github.com/pmndrs/react-three-fiber/pull/782\n // Events trigger outside of canvas when moved\n const offsets = (raycaster == null ? void 0 : raycaster.computeOffsets == null ? void 0 : raycaster.computeOffsets(event, sharedState.current)) || event.nativeEvent;\n\n if (offsets) {\n const {\n offsetX,\n offsetY\n } = offsets;\n const {\n width,\n height\n } = state.current.size;\n mouse.set(offsetX / width * 2 - 1, -(offsetY / height) * 2 + 1);\n defaultRaycaster.setFromCamera(mouse, state.current.camera);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, []);\n /** Intersects interaction objects using the event input */\n\n const intersect = useCallback(filter => {\n // Skip event handling when noEvents is set\n if (state.current.noEvents) return [];\n const seen = new Set();\n const hits = []; // Allow callers to eliminate event objects\n\n const eventsObjects = filter ? filter(state.current.scene.__interaction) : state.current.scene.__interaction; // Intersect known handler objects and filter against duplicates\n\n let intersects = defaultRaycaster.intersectObjects(eventsObjects, true).filter(item => {\n const id = makeId(item);\n if (seen.has(id)) return false;\n seen.add(id);\n return true;\n }); // https://github.com/mrdoob/three.js/issues/16031\n // Allow custom userland intersect sort order\n\n if (raycaster && raycaster.filter && sharedState.current) {\n intersects = raycaster.filter(intersects, sharedState.current);\n }\n\n for (const intersect of intersects) {\n let eventObject = intersect.object; // Bubble event up\n\n while (eventObject) {\n const handlers = eventObject.__handlers;\n if (handlers) hits.push({ ...intersect,\n eventObject\n });\n eventObject = eventObject.parent;\n }\n }\n\n return hits;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n /** Calculates click deltas */\n\n const calculateDistance = useCallback(event => {\n const dx = event.nativeEvent.offsetX - state.current.initialClick[0];\n const dy = event.nativeEvent.offsetY - state.current.initialClick[1];\n return Math.round(Math.sqrt(dx * dx + dy * dy));\n }, []);\n const handlePointerCancel = useCallback((event, hits, prepare = true) => {\n state.current.pointer.emit('pointerCancel', event);\n if (prepare) prepareRay(event);\n Array.from(hovered.values()).forEach(hoveredObj => {\n // When no objects were hit or the the hovered object wasn't found underneath the cursor\n // we call onPointerOut and delete the object from the hovered-elements map\n if (hits && (!hits.length || !hits.find(hit => hit.object === hoveredObj.object && hit.index === hoveredObj.index))) {\n const eventObject = hoveredObj.eventObject;\n const handlers = eventObject.__handlers;\n hovered.delete(makeId(hoveredObj));\n\n if (handlers) {\n // Clear out intersects, they are outdated by now\n const data = { ...hoveredObj,\n intersections: hits || []\n };\n if (handlers.pointerOut) handlers.pointerOut({ ...data,\n type: 'pointerout'\n });\n if (handlers.pointerLeave) handlers.pointerLeave({ ...data,\n type: 'pointerleave'\n });\n }\n }\n }); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n /** Creates filtered intersects and returns an array of positive hits */\n\n const getIntersects = useCallback((event, filter) => {\n // Get fresh intersects\n const intersections = intersect(filter); // If the interaction is captured take that into account, the captured event has to be part of the intersects\n\n if (state.current.captured && event.type !== 'click' && event.type !== 'wheel') {\n state.current.captured.forEach(captured => {\n if (!intersections.find(hit => hit.eventObject === captured.eventObject)) intersections.push(captured);\n });\n }\n\n return intersections;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n /** Handles intersections by forwarding them to handlers */\n\n const handleIntersects = useCallback((intersections, event, fn) => {\n // If anything has been found, forward it to the event listeners\n if (intersections.length) {\n const unprojectedPoint = temp.set(mouse.x, mouse.y, 0).unproject(state.current.camera);\n const delta = event.type === 'click' ? calculateDistance(event) : 0;\n\n const releasePointerCapture = id => event.target.releasePointerCapture(id);\n\n const localState = {\n stopped: false,\n captured: false\n };\n\n for (const hit of intersections) {\n const setPointerCapture = id => {\n // If the hit is going to be captured flag that we're in captured state\n if (!localState.captured) {\n localState.captured = true; // The captured hit array is reset to collect hits\n\n state.current.captured = [];\n } // Push hits to the array\n\n\n if (state.current.captured) {\n state.current.captured.push(hit);\n } // Call the original event now\n event.target.setPointerCapture(id);\n };\n\n const raycastEvent = { ...event,\n ...hit,\n intersections,\n stopped: localState.stopped,\n delta,\n unprojectedPoint,\n ray: defaultRaycaster.ray,\n camera: state.current.camera,\n // Hijack stopPropagation, which just sets a flag\n stopPropagation: () => {\n // https://github.com/react-spring/react-three-fiber/issues/596\n // Events are not allowed to stop propagation if the pointer has been captured\n const cap = state.current.captured;\n\n if (!cap || cap.find(h => h.eventObject.id === hit.eventObject.id)) {\n raycastEvent.stopped = localState.stopped = true; // Propagation is stopped, remove all other hover records\n // An event handler is only allowed to flush other handlers if it is hovered itself\n\n if (hovered.size && Array.from(hovered.values()).find(i => i.eventObject === hit.eventObject)) {\n // Objects cannot flush out higher up objects that have already caught the event\n const higher = intersections.slice(0, intersections.indexOf(hit));\n handlePointerCancel(raycastEvent, [...higher, hit]);\n }\n }\n },\n target: { ...event.target,\n setPointerCapture,\n releasePointerCapture\n },\n currentTarget: { ...event.currentTarget,\n setPointerCapture,\n releasePointerCapture\n },\n sourceEvent: event\n };\n fn(raycastEvent); // Event bubbling may be interrupted by stopPropagation\n\n if (localState.stopped === true) break;\n }\n }\n\n return intersections;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const handlePointerMove = useCallback((event, prepare = true) => {\n state.current.pointer.emit('pointerMove', event);\n if (prepare) prepareRay(event);\n const hits = getIntersects(event, // This is onPointerMove, we're only interested in events that exhibit this particular event\n objects => objects.filter(obj => ['Move', 'Over', 'Enter', 'Out', 'Leave'].some(name => obj.__handlers['pointer' + name]))); // Take care of unhover\n\n handlePointerCancel(event, hits);\n handleIntersects(hits, event, data => {\n const eventObject = data.eventObject;\n const handlers = eventObject.__handlers; // Check presence of handlers\n\n if (!handlers) return; // Check if mouse enter or out is present\n\n if (handlers.pointerOver || handlers.pointerEnter || handlers.pointerOut || handlers.pointerLeave) {\n const id = makeId(data);\n const hoveredItem = hovered.get(id);\n\n if (!hoveredItem) {\n // If the object wasn't previously hovered, book it and call its handler\n hovered.set(id, data);\n if (handlers.pointerOver) handlers.pointerOver({ ...data,\n type: 'pointerover'\n });\n if (handlers.pointerEnter) handlers.pointerEnter({ ...data,\n type: 'pointerenter'\n });\n } else if (hoveredItem.stopped) {\n // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n data.stopPropagation();\n }\n } // Call mouse move\n\n\n if (handlers.pointerMove) handlers.pointerMove(data);\n });\n return hits; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const handlePointer = useCallback(name => (event, prepare = true) => {\n state.current.pointer.emit(name, event);\n if (prepare) prepareRay(event);\n const hits = getIntersects(event);\n handleIntersects(hits, event, data => {\n const eventObject = data.eventObject;\n const handlers = eventObject.__handlers;\n\n if (handlers && handlers[name]) {\n // Forward all events back to their respective handlers with the exception of click events,\n // which must use the initial target\n if (name !== 'click' && name !== 'contextMenu' && name !== 'doubleClick' || state.current.initialHits.includes(eventObject)) {\n handlers[name](data);\n pointerMissed(event, defaultScene.__interaction, object => object !== eventObject);\n }\n }\n }); // If a click yields no results, pass it back to the user as a miss\n\n if (name === 'pointerDown') {\n state.current.initialClick = [event.nativeEvent.offsetX, event.nativeEvent.offsetY];\n state.current.initialHits = hits.map(hit => hit.eventObject);\n }\n\n if ((name === 'click' || name === 'contextMenu' || name === 'doubleClick') && !hits.length) {\n if (calculateDistance(event) <= 2) {\n pointerMissed(event, defaultScene.__interaction);\n if (onPointerMissed) onPointerMissed();\n }\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [onPointerMissed, calculateDistance, getIntersects, handleIntersects, prepareRay]);\n useMemo(() => {\n state.current.events = {\n onClick: handlePointer('click'),\n onContextMenu: handlePointer('contextMenu'),\n onDoubleClick: handlePointer('doubleClick'),\n onWheel: handlePointer('wheel'),\n onPointerDown: handlePointer('pointerDown'),\n onPointerUp: handlePointer('pointerUp'),\n onPointerLeave: e => handlePointerCancel(e, []),\n onPointerMove: handlePointerMove,\n // onGotPointerCapture is not needed any longer because the behaviour is hacked into\n // the event itself (see handleIntersects). But in order for non-web targets to simulate\n // it we keep the legacy event, which simply flags all current intersects as captured\n onGotPointerCaptureLegacy: e => state.current.captured = intersect(e),\n onLostPointerCapture: e => (state.current.captured = undefined, handlePointerCancel(e))\n };\n }, [handlePointer, intersect, handlePointerCancel, handlePointerMove]);\n /** Events ------------------------------------------------------------------------------------------------- */\n // This component is a bridge into the three render context, when it gets rendered\n // we know we are ready to compile shaders, call subscribers, etc\n\n const Canvas = useCallback(function Canvas(props) {\n const activate = () => setReady(true); // Pre-compile all materials before rendering out the first time\n\n\n useLayoutEffect(() => void gl.compile(defaultScene, defaultCam), []);\n useEffect(() => {\n const result = onCreated && onCreated(state.current);\n if (result && result.then) result.then(activate);else activate();\n }, []);\n return props.children;\n }, // The Canvas component has to be static, it should not be re-created ever\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []); // Render v-dom into scene\n\n useLayoutEffect(() => {\n render( /*#__PURE__*/createElement(Canvas, null, /*#__PURE__*/createElement(stateContext.Provider, {\n value: sharedState.current\n }, typeof children === 'function' ? children(state.current) : children)), defaultScene, state); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ready, children, sharedState.current]);\n useLayoutEffect(() => {\n if (ready) {\n // Start render-loop, either via RAF or setAnimationLoop for VR\n if (!state.current.vr) {\n if (state.current.frames === 0) invalidate(state);\n } else if ((gl.xr || gl.vr) && gl.setAnimationLoop) {\n (gl.xr || gl.vr).enabled = true;\n gl.setAnimationLoop(t => renderGl(state, t, 0, true));\n } else {\n console.warn('the gl instance does not support VR!');\n }\n }\n }, [gl, ready, invalidateFrameloop]); // Dispose renderer on unmount\n\n useEffect(() => () => {\n if (state.current.gl) {\n if (state.current.gl.renderLists) state.current.gl.renderLists.dispose();\n if (state.current.gl.forceContextLoss) state.current.gl.forceContextLoss();\n dispose(state.current.gl);\n }\n\n unmountComponentAtNode(state.current.scene, () => {\n dispose(state.current.raycaster);\n dispose(state.current.camera);\n dispose(state.current);\n });\n }, []);\n return state.current.events;\n};\n\nfunction pointerMissed(event, objects, filter = object => true) {\n objects.filter(filter).forEach(object => {\n var _handlers$pointerMis, _handlers;\n\n return (_handlers$pointerMis = (_handlers = object.__handlers).pointerMissed) == null ? void 0 : _handlers$pointerMis.call(_handlers, event);\n });\n}\n\nfunction dispose(obj) {\n if (obj.dispose && obj.type !== 'Scene') obj.dispose();\n\n for (const p in obj) {\n if (typeof p === 'object' && p.dispose) p.dispose();\n delete obj[p];\n }\n}\n\nfunction useContext(context) {\n let result = useContext$1(context);\n\n if (!('subscribe' in result)) {\n throw new Error(`⚡️ react-three-fiber hooks can only be used within the Canvas component! https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#hooks`);\n }\n\n return result;\n}\n\nfunction useFrame(callback, renderPriority = 0) {\n const {\n subscribe\n } = useContext(stateContext); // Update ref\n\n const ref = useRef(callback);\n useLayoutEffect(() => void (ref.current = callback), [callback]); // Subscribe/unsub\n\n useEffect(() => {\n const unsubscribe = subscribe(ref, renderPriority);\n return () => unsubscribe();\n }, [renderPriority, subscribe]);\n return null;\n}\nfunction useThree() {\n return useContext(stateContext);\n}\nfunction useUpdate(callback, dependents, optionalRef) {\n const {\n invalidate\n } = useContext(stateContext);\n const localRef = useRef();\n const ref = optionalRef ? optionalRef : localRef;\n useLayoutEffect(() => {\n if (ref.current) {\n callback(ref.current);\n invalidate();\n }\n }, dependents); // eslint-disable-line react-hooks/exhaustive-deps\n\n return ref;\n}\nfunction useResource(optionalRef) {\n const [_, forceUpdate] = useState(false);\n const localRef = useRef(undefined);\n const ref = optionalRef ? optionalRef : localRef;\n useLayoutEffect(() => void forceUpdate(i => !i), []);\n return ref;\n}\n\nfunction buildGraph(object) {\n const data = {\n nodes: {},\n materials: {}\n };\n\n if (object) {\n object.traverse(obj => {\n if (obj.name) data.nodes[obj.name] = obj;\n if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n });\n }\n\n return data;\n}\n\nfunction useGraph(object) {\n return useMemo(() => buildGraph(object), [object]);\n}\n\nfunction loadingFn(extensions, onProgress) {\n return function (Proto, ...input) {\n // Construct new loader and run extensions\n const loader = new Proto();\n if (extensions) extensions(loader); // Go through the urls and load them\n\n return Promise.all(input.map(input => new Promise((res, reject) => loader.load(input, data => {\n if (data.scene) Object.assign(data, buildGraph(data.scene));\n res(data);\n }, onProgress, error => {\n var _error$message;\n\n return reject((_error$message = error.message) != null ? _error$message : `failure loading ${input}`);\n }))));\n };\n}\n\nfunction useLoader(Proto, input, extensions, onProgress) {\n // Use suspense to load async assets\n const keys = Array.isArray(input) ? input : [input];\n const results = useAsset(loadingFn(extensions, onProgress), Proto, ...keys); // Return the object/s\n\n return Array.isArray(input) ? results : results[0];\n}\n\nuseLoader.preload = function (Proto, input, extensions) {\n const keys = Array.isArray(input) ? input : [input];\n return useAsset.preload(loadingFn(extensions), Proto, ...keys);\n};\n\nconst defaultStyles = {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n};\n\nfunction Content({\n children,\n setEvents,\n container,\n renderer,\n effects,\n ...props\n}) {\n // Create renderer\n const [gl] = useState(renderer);\n if (!gl) console.warn('No renderer created!'); // Mount and unmount management\n\n useEffect(() => {\n if (effects) effects(gl, container);\n }, [container, effects, gl]); // Init canvas, fetch events, hand them back to the wrapping div\n\n const events = useCanvas({ ...props,\n children,\n gl: gl\n });\n useEffect(() => {\n setEvents(events);\n }, [events, setEvents]);\n return null;\n}\n\nconst ResizeContainer = /*#__PURE__*/React.memo(function ResizeContainer(props) {\n const {\n renderer,\n effects,\n children,\n vr,\n webgl1,\n concurrent,\n shadowMap,\n colorManagement,\n orthographic,\n invalidateFrameloop,\n updateDefaultCamera,\n noEvents,\n gl,\n camera,\n raycaster,\n pixelRatio,\n onCreated,\n onPointerMissed,\n preRender,\n resize,\n style,\n ...restSpread\n } = props;\n const containerRef = useRef(); // onGotPointerCaptureLegacy is a fake event used by non-web targets to simulate poinzter capture\n\n const [{\n onGotPointerCaptureLegacy,\n ...events\n }, setEvents] = useState({});\n const [bind, size, forceResize] = useMeasure({\n scroll: true,\n debounce: {\n scroll: 50,\n resize: 0\n },\n ...resize\n }); // Flag view ready once it's been measured out\n\n const readyFlag = useRef(false);\n const ready = useMemo(() => readyFlag.current = readyFlag.current || !!size.width && !!size.height, [size]);\n const state = useMemo(() => ({\n size,\n forceResize,\n setEvents,\n container: containerRef.current\n }), [forceResize, size]); // Allow Gatsby, Next and other server side apps to run. Will output styles to reduce flickering.\n\n if (typeof window === 'undefined') return /*#__PURE__*/React.createElement(\"div\", _extends({\n style: { ...defaultStyles,\n ...style\n }\n }, restSpread), preRender); // Render the canvas into the dom\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: mergeRefs([bind, containerRef]),\n style: { ...defaultStyles,\n ...style\n }\n }, events, restSpread), preRender, ready && /*#__PURE__*/React.createElement(Content, _extends({}, props, state)));\n});\n\nconst Canvas = /*#__PURE__*/React.memo(function Canvas({\n children,\n ...props\n}) {\n const canvasRef = useRef();\n const renderer = props.webgl1 ? WebGL1Renderer : WebGLRenderer;\n return /*#__PURE__*/React.createElement(ResizeContainer, _extends({}, props, {\n renderer: () => {\n if (canvasRef.current) {\n const params = {\n antialias: true,\n alpha: true,\n ...props.gl\n };\n const temp = new renderer({\n powerPreference: 'high-performance',\n //stencil: false,\n //depth: false,\n canvas: canvasRef.current,\n ...params\n });\n return temp;\n }\n },\n preRender: /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvasRef,\n style: {\n display: 'block'\n }\n })\n }), children);\n});\n\nexport { Canvas, threeTypes as ReactThreeFiber, Renderer, ResizeContainer, addAfterEffect, addEffect, addTail, applyProps, createPortal, extend, forceResize, invalidate, isOrthographicCamera, render, renderGl, stateContext, unmountComponentAtNode, useCanvas, useFrame, useGraph, useLoader, useResource, useThree, useUpdate };\n","import { defineHidden, is, createInterpolator, each, getFluidConfig, isAnimatedString, useForceUpdate } from '@react-spring/shared';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { frameLoop } from '@react-spring/shared/globals';\nimport { forwardRef, useRef, createElement } from 'react';\nimport { useLayoutEffect } from 'react-layout-effect';\n\nconst $node = Symbol.for('Animated:node');\nconst isAnimated = value => !!value && value[$node] === value;\n/** Get the owner's `Animated` node. */\n\nconst getAnimated = owner => owner && owner[$node];\n/** Set the owner's `Animated` node. */\n\nconst setAnimated = (owner, node) => defineHidden(owner, $node, node);\n/** Get every `AnimatedValue` in the owner's `Animated` node. */\n\nconst getPayload = owner => owner && owner[$node] && owner[$node].getPayload();\nclass Animated {\n /** The cache of animated values */\n constructor() {\n this.payload = void 0;\n // This makes \"isAnimated\" return true.\n setAnimated(this, this);\n }\n /** Get the current value. Pass `true` for only animated values. */\n\n\n /** Get every `AnimatedValue` used by this node. */\n getPayload() {\n return this.payload || [];\n }\n\n}\n\n/** An animated number or a native attribute value */\n\nclass AnimatedValue extends Animated {\n constructor(_value) {\n super();\n this._value = _value;\n this.done = true;\n this.elapsedTime = void 0;\n this.lastPosition = void 0;\n this.lastVelocity = void 0;\n this.v0 = void 0;\n\n if (is.num(this._value)) {\n this.lastPosition = this._value;\n }\n }\n\n static create(from, _to) {\n return new AnimatedValue(from);\n }\n\n getPayload() {\n return [this];\n }\n\n getValue() {\n return this._value;\n }\n /**\n * Set the current value and optionally round it.\n *\n * The `step` argument does nothing whenever it equals `undefined` or `0`.\n * It works with fractions and whole numbers. The best use case is (probably)\n * rounding to the pixel grid with a step of:\n *\n * 1 / window.devicePixelRatio\n */\n\n\n setValue(value, step) {\n if (is.num(value)) {\n this.lastPosition = value;\n\n if (step) {\n value = Math.round(value / step) * step;\n\n if (this.done) {\n this.lastPosition = value;\n }\n }\n }\n\n if (this._value === value) {\n return false;\n }\n\n this._value = value;\n return true;\n }\n\n reset() {\n const {\n done\n } = this;\n this.done = false;\n\n if (is.num(this._value)) {\n this.elapsedTime = 0;\n this.lastPosition = this._value;\n if (done) this.lastVelocity = null;\n this.v0 = null;\n }\n }\n\n}\n\nclass AnimatedString extends AnimatedValue {\n constructor(from, to) {\n super(0);\n this._value = void 0;\n this._string = null;\n this._toString = void 0;\n this._toString = createInterpolator({\n output: [from, to]\n });\n }\n\n static create(from, to = from) {\n if (is.str(from) && is.str(to)) {\n return new AnimatedString(from, to);\n }\n\n throw TypeError('Expected \"from\" and \"to\" to be strings');\n }\n\n getValue() {\n let value = this._string;\n return value == null ? this._string = this._toString(this._value) : value;\n }\n\n setValue(value) {\n if (!is.num(value)) {\n this._string = value;\n this._value = 1;\n } else if (super.setValue(value)) {\n this._string = null;\n } else {\n return false;\n }\n\n return true;\n }\n\n reset(goal) {\n if (goal) {\n this._toString = createInterpolator({\n output: [this.getValue(), goal]\n });\n }\n\n this._value = 0;\n super.reset();\n }\n\n}\n\nconst TreeContext = {\n current: null\n};\n\n/** An object containing `Animated` nodes */\nclass AnimatedObject extends Animated {\n constructor(source = null) {\n super();\n this.source = void 0;\n this.setValue(source);\n }\n\n getValue(animated) {\n if (!this.source) return null;\n const values = {};\n each(this.source, (source, key) => {\n if (isAnimated(source)) {\n values[key] = source.getValue(animated);\n } else {\n const config = getFluidConfig(source);\n\n if (config) {\n values[key] = config.get();\n } else if (!animated) {\n values[key] = source;\n }\n }\n });\n return values;\n }\n /** Replace the raw object data */\n\n\n setValue(source) {\n this.source = source;\n this.payload = this._makePayload(source);\n }\n\n reset() {\n if (this.payload) {\n each(this.payload, node => node.reset());\n }\n }\n /** Create a payload set. */\n\n\n _makePayload(source) {\n if (source) {\n const payload = new Set();\n each(source, this._addToPayload, payload);\n return Array.from(payload);\n }\n }\n /** Add to a payload set. */\n\n\n _addToPayload(source) {\n const config = getFluidConfig(source);\n\n if (config && TreeContext.current) {\n TreeContext.current.dependencies.add(source);\n }\n\n const payload = getPayload(source);\n\n if (payload) {\n each(payload, node => this.add(node));\n }\n }\n\n}\n\n/** An array of animated nodes */\nclass AnimatedArray extends AnimatedObject {\n constructor(from, to) {\n super(null);\n this.source = void 0;\n super.setValue(this._makeAnimated(from, to));\n }\n\n static create(from, to) {\n return new AnimatedArray(from, to);\n }\n\n getValue() {\n return this.source.map(node => node.getValue());\n }\n\n setValue(newValue) {\n const payload = this.getPayload(); // Reuse the payload when lengths are equal.\n\n if (newValue && newValue.length == payload.length) {\n each(payload, (node, i) => node.setValue(newValue[i]));\n } else {\n // Remake the payload when length changes.\n this.source = this._makeAnimated(newValue);\n this.payload = this._makePayload(this.source);\n }\n }\n /** Convert the `from` and `to` values to an array of `Animated` nodes */\n\n\n _makeAnimated(from, to = from) {\n return from ? from.map((from, i) => (isAnimatedString(from) ? AnimatedString : AnimatedValue).create(from, to[i])) : [];\n }\n\n}\n\nclass AnimatedProps extends AnimatedObject {\n /** Equals true when an update is scheduled for \"end of frame\" */\n constructor(update) {\n super(null);\n this.update = update;\n this.dirty = false;\n }\n\n setValue(props, context) {\n if (!props) return; // The constructor passes null.\n\n if (context) {\n TreeContext.current = context;\n\n if (props.style) {\n const {\n createAnimatedStyle\n } = context.host;\n props = _extends(_extends({}, props), {}, {\n style: createAnimatedStyle(props.style)\n });\n }\n }\n\n super.setValue(props);\n TreeContext.current = null;\n }\n /** @internal */\n\n\n onParentChange({\n type\n }) {\n if (!this.dirty && type === 'change') {\n this.dirty = true;\n frameLoop.onFrame(() => {\n this.dirty = false;\n this.update();\n });\n }\n }\n\n}\n\nconst withAnimated = (Component, host) => forwardRef((rawProps, ref) => {\n const instanceRef = useRef(null);\n const hasInstance = // Function components must use \"forwardRef\" to avoid being\n // re-rendered on every animation frame.\n !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n const forceUpdate = useForceUpdate();\n const props = new AnimatedProps(() => {\n const instance = instanceRef.current;\n\n if (hasInstance && !instance) {\n return; // The wrapped component forgot to forward its ref.\n }\n\n const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false; // Re-render the component when native updates fail.\n\n if (didUpdate === false) {\n forceUpdate();\n }\n });\n const dependencies = new Set();\n props.setValue(rawProps, {\n dependencies,\n host\n });\n useLayoutEffect(() => {\n each(dependencies, dep => dep.addChild(props));\n return () => each(dependencies, dep => dep.removeChild(props));\n });\n return /*#__PURE__*/createElement(Component, _extends({}, host.getComponentProps(props.getValue()), {\n ref: hasInstance && (value => {\n instanceRef.current = updateRef(ref, value);\n })\n }));\n});\n\nfunction updateRef(ref, value) {\n if (ref) {\n if (is.fun(ref)) ref(value);else ref.current = value;\n }\n\n return value;\n}\n\n// For storing the animated version on the original component\nconst cacheKey = Symbol.for('AnimatedComponent');\nconst createHost = (components, {\n applyAnimatedValues = () => false,\n createAnimatedStyle = style => new AnimatedObject(style),\n getComponentProps = props => props\n} = {}) => {\n const hostConfig = {\n applyAnimatedValues,\n createAnimatedStyle,\n getComponentProps\n };\n\n const animated = Component => {\n const displayName = getDisplayName(Component) || 'Anonymous';\n\n if (is.str(Component)) {\n Component = withAnimated(Component, hostConfig);\n } else {\n Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n }\n\n Component.displayName = \"Animated(\" + displayName + \")\";\n return Component;\n };\n\n each(components, (Component, key) => {\n if (!is.str(key)) {\n key = getDisplayName(Component);\n }\n\n animated[key] = animated(Component);\n });\n return {\n animated\n };\n};\n\nconst getDisplayName = arg => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedProps, AnimatedString, AnimatedValue, createHost, getAnimated, getPayload, isAnimated, setAnimated };\n//# sourceMappingURL=index.js.map\n",null,null,null,null,null,null,null,null,"import superPropBase from \"@babel/runtime/helpers/esm/superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\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}","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY =\n Boolean(typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : (typeof process !== 'undefined' && typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' && process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false' ? false : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : (typeof process !== 'undefined' && typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false' ? false : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n )\n ));\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n\n // Avoid Edge bug where empty style elements don't create sheets\n element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule !== undefined && typeof rule.cssText === 'string') {\n return rule.cssText;\n } else {\n return '';\n }\n }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n element: HTMLStyleElement;\n\n nodes: NodeList;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n this.nodes = element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.nodes[index].textContent;\n } else {\n return '';\n }\n }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean,\n useCSSOMInjection?: boolean,\n target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n\n names: NamesAllocationMap;\n\n options: SheetOptions;\n\n tag: void | GroupedTag;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT,\n globalStyles?: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names);\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.options.isServer && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag(): GroupedTag {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id): any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id): any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id): any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n\n /** Outputs the current sheet as a CSS string with markers for SSR */\n toString(): string {\n return outputSheet(this);\n }\n}\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n id: string;\n\n name: string;\n\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n toString = () => {\n return throwStyledError(12, String(this.name));\n };\n\n getName(stylisInstance: Stringifier = masterStylis) {\n return this.name + stylisInstance.hash;\n }\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext, useDebugValue } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n Attrs,\n IStyledComponent,\n IStyledStatics,\n RuleSet,\n ShouldForwardProp,\n Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n // NOTE: can't memoize this\n // returns [context, resolvedAttrs]\n // where resolvedAttrs is only the things injected by the attrs themselves\n const context = { ...props, theme };\n const resolvedAttrs = {};\n\n attrs.forEach(attrDef => {\n let resolvedAttrDef = attrDef;\n let key;\n\n if (isFunction(resolvedAttrDef)) {\n resolvedAttrDef = resolvedAttrDef(context);\n }\n\n /* eslint-disable guard-for-in */\n for (key in resolvedAttrDef) {\n context[key] = resolvedAttrs[key] =\n key === 'className'\n ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n : resolvedAttrDef[key];\n }\n /* eslint-enable guard-for-in */\n });\n\n return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle(\n componentStyle: ComponentStyle,\n isStatic: boolean,\n resolvedAttrs: T,\n warnTooManyClasses?: $Call\n) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n\n const className = isStatic\n ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n if (process.env.NODE_ENV !== 'production') useDebugValue(className);\n\n if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n warnTooManyClasses(className);\n }\n\n return className;\n}\n\nfunction useStyledComponentImpl(\n forwardedComponent: IStyledComponent,\n props: Object,\n forwardedRef: Ref,\n isStatic: boolean\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n shouldForwardProp,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n if (process.env.NODE_ENV !== 'production') useDebugValue(styledComponentId);\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n const generatedClassName = useInjectedStyle(\n componentStyle,\n isStatic,\n context,\n process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n );\n\n const refToForward = forwardedRef;\n\n const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n const isTargetTag = isTag(elementToBeCreated);\n const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n const propsForElement = {};\n\n // eslint-disable-next-line guard-for-in\n for (const key in computedProps) {\n if (key[0] === '$' || key === 'as') continue;\n else if (key === 'forwardedAs') {\n propsForElement.as = computedProps[key];\n } else if (\n shouldForwardProp ? shouldForwardProp(key, validAttr) : isTargetTag ? validAttr(key) : true\n ) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (props.style && attrs.style !== props.style) {\n propsForElement.style = { ...props.style, ...attrs.style };\n }\n\n propsForElement.className = Array.prototype\n .concat(\n foldedComponentIds,\n styledComponentId,\n generatedClassName !== styledComponentId ? generatedClassName : null,\n props.className,\n attrs.className\n )\n .filter(Boolean)\n .join(' ');\n\n propsForElement.ref = refToForward;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n target: $PropertyType,\n options: {\n attrs?: Attrs,\n componentId: string,\n displayName?: string,\n parentComponentId?: string,\n shouldForwardProp?: ShouldForwardProp,\n },\n rules: RuleSet\n) {\n const isTargetStyledComp = isStyledComponent(target);\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && ((target: any): IStyledComponent).attrs\n ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n : attrs;\n\n // eslint-disable-next-line prefer-destructuring\n let shouldForwardProp = options.shouldForwardProp;\n\n if (isTargetStyledComp && target.shouldForwardProp) {\n if (options.shouldForwardProp) {\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, filterFn) =>\n ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n prop,\n filterFn\n ) && ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn);\n } else {\n // eslint-disable-next-line prefer-destructuring\n shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n );\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n const isStatic = componentStyle.isStatic && attrs.length === 0;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent: IStyledComponent;\n\n const forwardRef = (props, ref) =>\n // eslint-disable-next-line\n useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n forwardRef.displayName = displayName;\n\n WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? Array.prototype.concat(\n ((target: any): IStyledComponent).foldedComponentIds,\n ((target: any): IStyledComponent).styledComponentId\n )\n : EMPTY_ARRAY;\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp\n ? ((target: any): IStyledComponent).target\n : target;\n\n WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n const newComponentId =\n previousComponentId &&\n `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n const newOptions = {\n ...optionsToCopy,\n attrs: finalAttrs,\n componentId: newComponentId,\n };\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n WrappedStyledComponent.toString = () => `.${WrappedStyledComponent.styledComponentId}`;\n\n if (isCompositeComponent) {\n hoist<\n IStyledStatics,\n $PropertyType,\n { [key: $Keys]: true }\n >(WrappedStyledComponent, ((target: any): $PropertyType), {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n withComponent: true,\n });\n }\n\n return WrappedStyledComponent;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n const css = stylis(flatCSS.join(''), '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet) {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n isStreaming: boolean;\n\n instance: StyleSheet;\n\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n const nonce = getNonce();\n const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n const htmlAttr = attrs.filter(Boolean).join(' ');\n\n return ``;\n };\n\n collectStyles(children: any) {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return {children};\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: this.instance.toString(),\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props: any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [