{"version":3,"sources":["../node_modules/react/index.js","../node_modules/three/build/three.module.js","../../src/index.ts","../node_modules/unstated/lib/unstated.es.js","../node_modules/prop-types/index.js","../../src/parse.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/withTranslation.js","../node_modules/babel-runtime/core-js/object/get-prototype-of.js","../node_modules/babel-runtime/helpers/classCallCheck.js","../node_modules/babel-runtime/helpers/createClass.js","../node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-runtime/helpers/inherits.js","../node_modules/pdfjs-dist/lib/shared/util.js","../node_modules/babel-runtime/helpers/defineProperty.js","../node_modules/react-google-maps/lib/constants.js","../node_modules/react-google-maps/lib/utils/MapChildHelper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/axios/lib/utils.js","../node_modules/lodash/_root.js","../node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/core-js/library/modules/_core.js","../node_modules/lodash/isArray.js","../node_modules/dnd-multi-backend/dist/esm/createTransition.js","../node_modules/dnd-multi-backend/dist/esm/Transitions.js","../node_modules/dnd-multi-backend/dist/esm/PreviewList.js","../node_modules/dnd-multi-backend/dist/esm/MultiBackend.js","../node_modules/dnd-multi-backend/dist/esm/index.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/pdfjs-dist/lib/pdf.js","../node_modules/core-js/library/modules/_wks.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/webpack/buildin/global.js","../node_modules/core-js/library/modules/_global.js","../node_modules/core-js/library/modules/_export.js","../node_modules/core-js/library/modules/_object-dp.js","../node_modules/core-js/library/modules/_descriptors.js","../node_modules/react-dom/index.js","../node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js","../node_modules/core-js/library/modules/_has.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/isObject.js","../node_modules/core-js/library/modules/_hide.js","../node_modules/core-js/library/modules/_an-object.js","../node_modules/core-js/library/modules/_is-object.js","../node_modules/core-js/library/modules/_fails.js","../node_modules/core-js/library/modules/_to-iobject.js","../node_modules/lodash/isObjectLike.js","../node_modules/invariant/browser.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/fbjs/lib/shallowEqual.js","../node_modules/core-js/library/modules/_to-object.js","../node_modules/core-js/library/modules/_property-desc.js","../node_modules/core-js/library/modules/_iterators.js","../node_modules/lodash/identity.js","../node_modules/lodash/_baseGetTag.js","../node_modules/react-dnd/dist/esm/utils/isRef.js","../node_modules/redux/es/redux.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","../node_modules/dnd-core/dist/esm/utils/equality.js","../node_modules/dnd-core/dist/esm/reducers/dragOffset.js","../node_modules/dnd-core/dist/esm/actions/registry.js","../node_modules/dnd-core/dist/esm/utils/js_utils.js","../node_modules/dnd-core/dist/esm/reducers/dragOperation.js","../node_modules/dnd-core/dist/esm/reducers/refCount.js","../node_modules/dnd-core/dist/esm/utils/dirtiness.js","../node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","../node_modules/dnd-core/dist/esm/reducers/stateId.js","../node_modules/dnd-core/dist/esm/reducers/index.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","../node_modules/dnd-core/dist/esm/utils/matchesType.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","../node_modules/dnd-core/dist/esm/utils/coords.js","../node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js","../node_modules/dnd-core/dist/esm/interfaces.js","../node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","../node_modules/dnd-core/dist/esm/contracts.js","../node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js","../node_modules/dnd-core/dist/esm/DragDropManagerImpl.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","../node_modules/dnd-core/dist/esm/factories.js","../node_modules/react-dnd/dist/esm/common/DndContext.js","../node_modules/react-google-maps/lib/index.js","../../../../src/js/utils/index.js","../node_modules/core-js/library/modules/_library.js","../node_modules/core-js/library/modules/_uid.js","../node_modules/core-js/library/modules/_object-keys.js","../node_modules/core-js/library/modules/_object-pie.js","../node_modules/lodash/bind.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_createCtor.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_replaceHolders.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/keys.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/eq.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_toKey.js","../node_modules/classnames/index.js","../node_modules/react-slick/lib/utils/innerSliderUtils.js","../node_modules/pdfjs-dist/lib/display/display_utils.js","../node_modules/pdfjs-dist/lib/shared/is_node.js","../node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js","../node_modules/react-dnd/dist/esm/common/registration.js","../node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/react-dnd/dist/esm/utils/cloneWithRef.js","../node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js","../node_modules/symbol-observable/es/index.js","../node_modules/process/browser.js","../node_modules/autobind-decorator/lib/index.js","../node_modules/core-js/library/modules/_defined.js","../node_modules/core-js/library/modules/_shared-key.js","../node_modules/core-js/library/modules/_shared.js","../node_modules/core-js/library/modules/_ctx.js","../node_modules/core-js/library/modules/_to-primitive.js","../node_modules/core-js/library/modules/_to-integer.js","../node_modules/core-js/library/modules/_object-create.js","../node_modules/core-js/library/modules/_cof.js","../node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/core-js/library/modules/_wks-ext.js","../node_modules/core-js/library/modules/_wks-define.js","../node_modules/core-js/library/modules/_object-gops.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_LazyWrapper.js","../node_modules/lodash/_baseLodash.js","../node_modules/lodash/_getHolder.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_isKey.js","../node_modules/pdfjs-dist/lib/display/network_utils.js","../../../src/js/index.js","../node_modules/change-emitter/lib/index.js","../node_modules/object-assign/index.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../../../src/AsapQueue.ts","../../../src/TaskFactory.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../../../../src/js/input-range/label.jsx","../node_modules/babel-runtime/helpers/objectWithoutProperties.js","../node_modules/core-js/library/modules/_object-gpo.js","../node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/core-js/library/modules/_dom-create.js","../node_modules/babel-runtime/core-js/object/define-property.js","../node_modules/babel-runtime/helpers/typeof.js","../node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/core-js/library/modules/_iter-define.js","../node_modules/core-js/library/modules/_redefine.js","../node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/core-js/library/modules/_iobject.js","../node_modules/core-js/library/modules/_to-length.js","../node_modules/core-js/library/modules/_object-gopn.js","../node_modules/core-js/library/modules/_object-gopd.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_baseSetData.js","../node_modules/lodash/_metaMap.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_createHybrid.js","../node_modules/lodash/_composeArgs.js","../node_modules/lodash/_composeArgsRight.js","../node_modules/lodash/_createRecurry.js","../node_modules/lodash/_getData.js","../node_modules/lodash/_LodashWrapper.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_setData.js","../node_modules/lodash/_setWrapToString.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/toNumber.js","../node_modules/can-use-dom/index.js","../node_modules/recompose/es/Recompose.js","../node_modules/warning/browser.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isBuffer.js","../node_modules/webpack/buildin/module.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/toString.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/enquire.js/src/Util.js","../node_modules/pdfjs-dist/lib/display/api_compatibility.js","../node_modules/pdfjs-dist/lib/display/worker_options.js","../node_modules/void-elements/index.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../node_modules/react-full-screen/dist/index.js","../node_modules/create-react-context/lib/index.js","../../../src/index.ts","../node_modules/three/examples/jsm/effects/OutlineEffect.js","../node_modules/recompose/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/react-slick/lib/index.js","../../src/FileSaver.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","../node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","../node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","../node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","../node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","../node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","../node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","../node_modules/react-dnd-touch-backend/dist/esm/interfaces.js","../node_modules/react-dnd-touch-backend/dist/esm/utils/predicates.js","../node_modules/react-dnd-touch-backend/dist/esm/utils/offsets.js","../node_modules/react-dnd-touch-backend/dist/esm/utils/supportsPassive.js","../node_modules/react-dnd-touch-backend/dist/esm/OptionsReader.js","../node_modules/react-dnd-touch-backend/dist/esm/TouchBackendImpl.js","../node_modules/react-dnd-touch-backend/dist/esm/utils/math.js","../node_modules/react-dnd-multi-backend/dist/esm/HTML5toTouch.js","../node_modules/react-dnd-html5-backend/dist/esm/index.js","../node_modules/react-dnd-touch-backend/dist/esm/index.js","../node_modules/react-dnd-multi-backend/dist/esm/components/DndProvider.js","../node_modules/react-dnd/dist/esm/hooks/useDragLayer.js","../node_modules/react-dnd-preview/dist/esm/usePreview.js","../node_modules/react-dnd-preview/dist/esm/Context.js","../node_modules/react-dnd-preview/dist/esm/Preview.js","../node_modules/react-dnd-preview/dist/esm/index.js","../node_modules/react-dnd-multi-backend/dist/esm/common.js","../node_modules/react-dnd-multi-backend/dist/esm/components/Preview.js","../node_modules/three/examples/jsm/libs/inflate.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/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../src/fscreen.js","../../../src/asap.ts","../../../src/makeRequestCall.ts","../../../src/RawTask.ts","../node_modules/axios/index.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../../../../src/js/input-range/input-range.jsx","../../../../src/js/input-range/value-transformer.js","../../../../src/js/utils/captialize.js","../../../../src/js/utils/clamp.js","../../../../src/js/utils/distance-to.js","../../../../src/js/utils/is-defined.js","../../../../src/js/utils/is-number.js","../../../../src/js/utils/is-object.js","../../../../src/js/utils/length.js","../../../../src/js/input-range/default-class-names.js","../../../../src/js/input-range/range-prop-type.js","../../../../src/js/input-range/value-prop-type.js","../../../../src/js/input-range/slider.jsx","../../../../src/js/input-range/track.jsx","../../../../src/js/input-range/key-codes.js","../node_modules/react-google-maps/lib/withScriptjs.js","../node_modules/core-js/library/fn/object/get-prototype-of.js","../node_modules/core-js/library/modules/es6.object.get-prototype-of.js","../node_modules/core-js/library/modules/_object-sap.js","../node_modules/core-js/library/modules/_a-function.js","../node_modules/core-js/library/fn/object/define-property.js","../node_modules/core-js/library/modules/es6.object.define-property.js","../node_modules/babel-runtime/core-js/symbol/iterator.js","../node_modules/core-js/library/fn/symbol/iterator.js","../node_modules/core-js/library/modules/_string-at.js","../node_modules/core-js/library/modules/_iter-create.js","../node_modules/core-js/library/modules/_object-dps.js","../node_modules/core-js/library/modules/_array-includes.js","../node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/core-js/library/modules/_html.js","../node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/core-js/library/modules/_iter-step.js","../node_modules/babel-runtime/core-js/symbol.js","../node_modules/core-js/library/fn/symbol/index.js","../node_modules/core-js/library/modules/es6.symbol.js","../node_modules/core-js/library/modules/_meta.js","../node_modules/core-js/library/modules/_enum-keys.js","../node_modules/core-js/library/modules/_is-array.js","../node_modules/core-js/library/modules/_object-gopn-ext.js","../node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../node_modules/core-js/library/modules/es7.symbol.observable.js","../node_modules/babel-runtime/core-js/object/set-prototype-of.js","../node_modules/core-js/library/fn/object/set-prototype-of.js","../node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../node_modules/core-js/library/modules/_set-proto.js","../node_modules/babel-runtime/core-js/object/create.js","../node_modules/core-js/library/fn/object/create.js","../node_modules/core-js/library/modules/es6.object.create.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/constant.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_createWrap.js","../node_modules/lodash/_createBind.js","../node_modules/lodash/_createCurry.js","../node_modules/lodash/_countHolders.js","../node_modules/lodash/_isLaziable.js","../node_modules/lodash/noop.js","../node_modules/lodash/_getFuncName.js","../node_modules/lodash/_realNames.js","../node_modules/lodash/wrapperLodash.js","../node_modules/lodash/_wrapperClone.js","../node_modules/lodash/_getWrapDetails.js","../node_modules/lodash/_insertWrapDetails.js","../node_modules/lodash/_updateWrapDetails.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_reorder.js","../node_modules/lodash/_createPartial.js","../node_modules/lodash/_mergeData.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/scriptjs/dist/script.js","../node_modules/react-google-maps/lib/withGoogleMap.js","../node_modules/react-google-maps/lib/components/GoogleMap.js","../node_modules/babel-runtime/helpers/toConsumableArray.js","../node_modules/babel-runtime/core-js/array/from.js","../node_modules/core-js/library/fn/array/from.js","../node_modules/core-js/library/modules/es6.array.from.js","../node_modules/core-js/library/modules/_iter-call.js","../node_modules/core-js/library/modules/_is-array-iter.js","../node_modules/core-js/library/modules/_create-property.js","../node_modules/core-js/library/modules/core.get-iterator-method.js","../node_modules/core-js/library/modules/_classof.js","../node_modules/core-js/library/modules/_iter-detect.js","../node_modules/lodash/reduce.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_createBaseEach.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/_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/_Uint8Array.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.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/_baseToString.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseReduce.js","../node_modules/lodash/forEach.js","../node_modules/lodash/_castFunction.js","../node_modules/lodash/lowerFirst.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/has.js","../node_modules/lodash/_baseHas.js","../node_modules/react-google-maps/lib/components/Circle.js","../node_modules/react-google-maps/lib/components/Marker.js","../node_modules/react-google-maps/lib/components/Polyline.js","../node_modules/react-google-maps/lib/components/Polygon.js","../node_modules/react-google-maps/lib/components/Rectangle.js","../node_modules/react-google-maps/lib/components/InfoWindow.js","../node_modules/react-google-maps/lib/components/OverlayView.js","../node_modules/babel-runtime/helpers/extends.js","../node_modules/babel-runtime/core-js/object/assign.js","../node_modules/core-js/library/fn/object/assign.js","../node_modules/core-js/library/modules/es6.object.assign.js","../node_modules/core-js/library/modules/_object-assign.js","../node_modules/lodash/delay.js","../node_modules/lodash/_baseDelay.js","../node_modules/lodash/assign.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/react-google-maps/lib/utils/OverlayViewHelper.js","../node_modules/react-google-maps/lib/components/GroundOverlay.js","../node_modules/react-google-maps/lib/components/DirectionsRenderer.js","../node_modules/react-google-maps/lib/components/FusionTablesLayer.js","../node_modules/react-google-maps/lib/components/KmlLayer.js","../node_modules/react-google-maps/lib/components/TrafficLayer.js","../node_modules/react-google-maps/lib/components/StreetViewPanorama.js","../node_modules/react-google-maps/lib/components/BicyclingLayer.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/lodash.debounce/index.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/arrows.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/json2mq/index.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/react-slick/lib/default-props.js","../node_modules/enquire.js/src/index.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/pdfjs-dist/lib/display/api.js","../node_modules/pdfjs-dist/lib/display/font_loader.js","../node_modules/pdfjs-dist/lib/display/canvas.js","../node_modules/pdfjs-dist/lib/display/pattern_helper.js","../node_modules/pdfjs-dist/lib/shared/message_handler.js","../node_modules/pdfjs-dist/lib/display/metadata.js","../node_modules/pdfjs-dist/lib/display/xml_parser.js","../node_modules/pdfjs-dist/lib/display/transport_stream.js","../node_modules/pdfjs-dist/lib/display/webgl.js","../node_modules/pdfjs-dist/lib/display/text_layer.js","../node_modules/pdfjs-dist/lib/display/annotation_layer.js","../node_modules/pdfjs-dist/lib/display/svg.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/pdfjs-dist/lib/display/node_stream.js","../node_modules/pdfjs-dist/lib/display/content_disposition.js","../node_modules/pdfjs-dist/lib/display/network.js","../node_modules/pdfjs-dist/lib/display/fetch_stream.js","../node_modules/react-dnd/dist/esm/common/DndProvider.js","../node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js","../node_modules/react-dnd/dist/esm/common/SourceConnector.js","../node_modules/react-dnd/dist/esm/hooks/internal/drag.js","../node_modules/react-dnd/dist/esm/hooks/useDrag.js","../node_modules/react-dnd/dist/esm/common/TargetConnector.js","../node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js","../node_modules/react-dnd/dist/esm/hooks/internal/drop.js","../node_modules/react-dnd/dist/esm/hooks/useDrop.js"],"names":["module","exports","require","undefined","Number","EPSILON","Math","pow","isInteger","value","isFinite","floor","sign","x","Function","prototype","Object","defineProperty","get","this","toString","match","assign","target","TypeError","output","index","arguments","length","source","nextKey","hasOwnProperty","call","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","BackSide","DoubleSide","FlatShading","EquirectangularReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","LinearFilter","sRGBEncoding","EventDispatcher","addEventListener","type","listener","_listeners","listeners","indexOf","push","hasEventListener","removeEventListener","listenerArray","splice","dispatchEvent","event","array","slice","i","l","_lut","_canvas","MathUtils","DEG2RAD","PI","RAD2DEG","generateUUID","d0","random","d1","d2","d3","toUpperCase","clamp","min","max","euclideanModulo","n","m","mapLinear","a1","a2","b1","b2","lerp","y","t","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","ceil","log","LN2","floorPowerOfTwo","setQuaternionFromProperEuler","q","a","b","c","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","set","console","warn","Vector2","Matrix3","elements","error","defineProperties","isVector2","setScalar","scalar","setX","setY","setComponent","Error","getComponent","clone","constructor","copy","v","add","w","addVectors","addScalar","s","addScaledVector","sub","subVectors","subScalar","multiply","multiplyScalar","divide","divideScalar","applyMatrix3","e","clampScalar","minVal","maxVal","clampLength","round","roundToZero","negate","dot","cross","lengthSq","sqrt","manhattanLength","abs","normalize","angle","atan2","distanceTo","distanceToSquared","dx","dy","manhattanDistanceTo","setLength","alpha","lerpVectors","v1","v2","equals","fromArray","offset","toArray","fromBufferAttribute","attribute","getX","getY","rotateAround","center","isMatrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","identity","me","extractBasis","xAxis","yAxis","zAxis","setFromMatrix3Column","setFromMatrix4","multiplyMatrices","premultiply","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","determinant","d","f","g","h","getInverse","matrix","throwOnDegenerate","t11","t12","t13","det","detInv","transpose","tmp","getNormalMatrix","matrix4","transposeIntoArray","r","setUvTransform","tx","ty","sx","sy","rotation","cx","cy","scale","rotate","theta","translate","ImageUtils","getDataURL","image","canvas","HTMLCanvasElement","src","document","createElementNS","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","uuid","name","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","Vector4","z","WebGLRenderTarget","options","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","Quaternion","_x","_y","_z","_w","create","isTexture","updateMatrix","toJSON","meta","isRootObject","textures","metadata","generator","wrap","images","url","Array","isArray","dispose","transformUv","uv","isVector4","setZ","setW","applyMatrix4","setAxisAngleFromQuaternion","acos","setAxisAngleFromRotationMatrix","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getZ","getW","isWebGLRenderTarget","setSize","isWebGLMultisampleRenderTarget","slerp","qa","qb","qm","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","multiplyQuaternionsFlat","_onChangeCallback","isQuaternion","quaternion","setFromEuler","euler","update","isEuler","c1","c3","s1","s3","setFromAxisAngle","axis","halfAngle","setFromRotationMatrix","trace","setFromUnitVectors","vFrom","vTo","angleTo","rotateTowards","step","inverse","conjugate","p","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","_onChange","callback","_vector","Vector3","_quaternion","isVector3","multiplyVectors","applyEuler","applyQuaternion","applyAxisAngle","applyNormalMatrix","qx","qy","qz","qw","ix","iy","iz","iw","project","camera","matrixWorldInverse","projectionMatrix","unproject","projectionMatrixInverse","matrixWorld","transformDirection","crossVectors","ax","ay","az","bx","by","bz","projectOnVector","denominator","projectOnPlane","planeNormal","reflect","normal","dz","setFromSpherical","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindrical","setFromCylindricalCoords","setFromMatrixPosition","setFromMatrixScale","setFromMatrixColumn","sz","_v1","_m1","Matrix4","_zero","_one","isMatrix4","n14","n24","n34","n41","n42","n43","n44","copyPosition","makeBasis","extractRotation","scaleX","scaleY","scaleZ","makeRotationFromEuler","af","bf","ce","cf","de","df","ac","ad","bc","bd","makeRotationFromQuaternion","compose","lookAt","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","setPosition","t14","getMaxScaleOnAxis","scaleXSq","scaleYSq","scaleZSq","makeTranslation","makeRotationX","makeRotationY","makeRotationZ","makeRotationAxis","makeScale","makeShear","position","x2","y2","z2","wx","wy","wz","decompose","invSX","invSY","invSZ","makePerspective","left","right","top","bottom","near","far","makeOrthographic","_matrix","_quaternion$1","Euler","_order","DefaultOrder","Layers","mask","RotationOrders","asin","setFromQuaternion","setFromVector3","reorder","newOrder","toVector3","optionalResult","channel","enable","enableAll","toggle","disable","disableAll","test","layers","_object3DId","_v1$1","_q1","_m1$1","_target","_position","_scale","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","parent","children","DefaultUp","configurable","enumerable","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","Scene","background","environment","fog","overrideMaterial","autoUpdate","__THREE_DEVTOOLS__","CustomEvent","detail","isObject3D","onBeforeRender","onAfterRender","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","distance","translateX","translateY","translateZ","localToWorld","vector","worldToLocal","updateWorldMatrix","isCamera","isLight","object","remove","attach","getObjectById","id","getObjectByProperty","getObjectByName","getWorldPosition","updateMatrixWorld","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverse","traverseVisible","traverseAncestors","force","updateParents","updateChildren","geometries","materials","shapes","serialize","library","element","JSON","stringify","isInstancedMesh","count","instanceMatrix","isMesh","isLine","isPoints","geometry","parameters","shape","material","uuids","extractFromCache","cache","values","key","data","recursive","parse","child","isScene","_points","_vector$1","_box","Box3","_v0","_v1$2","_v2","_f0","_f1","_f2","_center","_extents","_triangleNormal","_testAxis","Infinity","satForAxes","axes","v0","extents","j","p0","p1","p2","isBox3","setFromArray","minX","minY","minZ","maxX","maxY","maxZ","setFromBufferAttribute","setFromPoints","points","makeEmpty","il","expandByPoint","setFromCenterAndSize","size","halfSize","setFromObject","expandByObject","box","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","boundingBox","computeBoundingBox","union","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","sphere","clampPoint","intersectsPlane","plane","constant","intersectsTriangle","triangle","distanceToPoint","getBoundingSphere","intersect","_box$1","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","getBoundingBox","_vector$2","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","origin","direction","ray","at","recast","closestPointToPoint","directionDistance","distanceSqToPoint","distanceSqToSegment","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","intersectSphere","tca","radius2","thc","t0","t1","distanceToPlane","intersectPlane","distToPoint","intersectBox","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectTriangle","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","_vector1","_vector2","_normalMatrix","Plane","isPlane","setComponents","setFromNormalAndCoplanarPoint","setFromCoplanarPoints","inverseNormalLength","distanceToSphere","projectPoint","intersectLine","line","delta","start","intersectsLine","startSign","endSign","end","coplanarPoint","optionalNormalMatrix","referencePoint","_v0$1","_v1$3","_v2$1","_v3","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","getNormal","targetLengthSq","getBarycoord","dot00","dot01","dot02","dot11","dot12","denom","invDenom","u","getUV","p3","uv1","uv2","uv3","isFrontFacing","setFromPointsAndIndices","i0","i1","i2","getArea","getMidpoint","getPlane","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","Color","setRGB","hue2rgb","SRGBToLinear","LinearToSRGB","Face3","color","materialIndex","vertexNormals","isColor","vertexColors","setHex","setStyle","hex","setHSL","style","handleAlpha","string","parseFloat","exec","components","parseInt","charAt","setColorName","copyGammaToLinear","gammaFactor","copyLinearToGamma","safeInverse","convertGammaToLinear","convertLinearToGamma","copySRGBToLinear","copyLinearToSRGB","convertSRGBToLinear","convertLinearToSRGB","getHex","getHexString","getHSL","hue","saturation","lightness","getStyle","offsetHSL","addColors","color1","color2","lerpHSL","NAMES","materialId","Material","blending","side","flatShading","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","premultipliedAlpha","toneMapped","MeshBasicMaterial","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","combine","reflectivity","refractionRatio","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","morphTargets","setValues","isMaterial","onBeforeCompile","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","BufferAttribute","itemSize","normalized","usage","updateRange","Int8BufferAttribute","Int8Array","Uint8BufferAttribute","Uint8Array","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Int16Array","Uint16BufferAttribute","Uint16Array","Int32BufferAttribute","Int32Array","Uint32BufferAttribute","Uint32Array","Float32BufferAttribute","Float32Array","Float64BufferAttribute","Float64Array","DirectGeometry","vertices","normals","colors","uvs","uvs2","groups","skinWeights","skinIndices","boundingSphere","verticesNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","uvsNeedUpdate","groupsNeedUpdate","arrayMax","isBufferAttribute","onUploadCallback","setUsage","copyAt","index1","index2","copyArray","copyColorsArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","setXYZ","setXY","setXYZW","onUpload","computeGroups","group","faces","face","fromGeometry","morphTargetsPosition","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargetsLength","morphTargetsNormal","morphNormalsLength","hasSkinIndices","hasSkinWeights","vertexUvs","morphTarget","morphNormal","_bufferGeometryId","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$4","BufferGeometry","attributes","morphAttributes","morphTargetsRelative","drawRange","isBufferGeometry","getIndex","setIndex","getAttribute","setAttribute","deleteAttribute","addGroup","clearGroups","setDrawRange","needsUpdate","tangent","computeBoundingSphere","positions","lineDistances","isGeometry","updateFromObject","direct","__directGeometry","elementsNeedUpdate","lineDistancesNeedUpdate","lineDistance","fromDirectGeometry","morphAttributesPosition","morphAttribute","isNaN","jl","computeFaceNormals","computeVertexNormals","vA","vB","vC","pA","pB","pC","cb","ab","indices","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","checkIntersection","raycaster","checkBufferGeometryIntersection","morphPosition","morphInfluences","morphTargetInfluences","influence","isSkinnedMesh","boneTransform","intersection","morphTargetDictionary","ml","String","intersects","groupMaterial","faceIndex","fvA","fvB","fvC","isMultiMaterial","fl","faceMaterial","uvs_f","_geometryId","_m1$3","_obj$1","_offset$1","Geometry","fromBufferGeometry","scope","addFace","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","faceVertexUvs2","uvsCopy","k","kl","mergeMesh","mesh","mergeVertices","verticesMap","unique","changes","faceIndicesToRemove","idx","diff","sortFacesByMaterialIndex","_id","sort","newUvs1","newUvs2","uvs1","vertex","normalsHash","colorsHash","uvsHash","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","srcVertexNormal","destVertexNormal","BoxBufferGeometry","depth","widthSegments","heightSegments","depthSegments","super","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","property","mergeUniforms","uniforms","merged","UniformsUtils","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","isShaderMaterial","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","offsetX","offsetY","clearViewOffset","skew","CubeCamera","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderTarget","WebGLCubeRenderTarget","renderer","scene","currentRenderTarget","getRenderTarget","setRenderTarget","render","clear","stencil","dummy","DataTexture","isWebGLCubeRenderTarget","fromEquirectangularTexture","shader","tEquirect","join","isDataTexture","_sphere$1","_vector$5","Frustum","p4","p5","planes","frustum","setFromProjectionMatrix","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","intersectsObject","intersectsSprite","sprite","negRadius","UniformsLib","common","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","maxMipLevel","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","time","frame","requestAnimationFrame","stop","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","isInterleavedBufferAttribute","deleteBuffer","buffer","delete","bufferType","createBuffer","bindBuffer","bufferData","bytesPerElement","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshtoon_frag","meshtoon_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","xr","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","toneMapping","unshift","WebGLBufferRenderer","info","mode","setMode","drawArrays","renderInstances","primcount","extension","methodName","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","_bufferGeometry","geometryAttributes","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","reset","instanceCount","absNumericalSort","WebGLMorphtargets","influencesList","program","objectInfluences","influences","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","WebGLObjects","updateMap","CubeTexture","DataTexture2DArray","wrapR","DataTexture3D","physical","transparency","isDataTexture2DArray","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueT1","unit","uniform1i","safeSetTexture2D","setValueT2DArray1","setTexture2DArray","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueV1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getShaderErrors","status","getShaderParameter","getShaderInfoLog","trim","split","addLineNumbers","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","prefixVertex","prefixFragment","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","gammaFactorDefine","customExtensions","extensionDerivatives","envMapCubeUV","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filter","generateExtensions","customDefines","chunks","generateDefines","createProgram","isRawShaderMaterial","shaderName","instancing","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","uvsVertexOnly","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","outputEncoding","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","lightMapEncoding","depthPacking","isGLSL3ShaderMaterial","versionRegex","cachedUniforms","cachedAttributes","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","deleteShader","getAttributes","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getTextureEncodingFromMap","getParameters","shadows","nClipPlanes","nClipIntersection","isMeshStandardMaterial","bones","skeleton","nVertexUniforms","nVertexMatrices","allocateBones","shaderobject","getShaderObject","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","pop","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","defaultProgram","getNextRenderItem","renderItem","finish","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","onSceneDispose","list","cameras","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","pointShadow","vector3","matrix42","setup","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","WebGLRenderState","lightsArray","shadowsArray","setupLights","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","has","isMeshDepthMaterial","isMeshDistanceMaterial","WebGLShadowMap","_renderer","_objects","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterials","_distanceMaterials","_materialCache","0","1","2","shadowMaterialVertical","SAMPLE_RATE","HALF_SAMPLE_RATE","shadow_pass","resolution","shadowMaterialHorizonal","HORIZONAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","mapPass","renderBufferDirect","getDepthMaterialVariant","useMorphing","useSkinning","useInstancing","getDistanceMaterialVariant","getDepthMaterial","result","getMaterialVariant","customMaterial","customDepthMaterial","customDistanceMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","depthMaterial","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","maxVertexAttributes","newAttributes","enabledAttributes","attributeDivisors","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","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","initAttributes","enableAttribute","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","stride","vertexAttribIPointer","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","apply","texImage3D","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","OffscreenCanvas","err","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","LOG2E","getInternalFormat","internalFormatName","glFormat","glType","filterFallback","onTextureDispose","textureProperties","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","deallocateRenderTarget","textureUnits","setTexture2D","slot","updateVideoTexture","__version","complete","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","convert","glInternalFormat","setTextureParameters","mipmap","mipmapImage","setTextureCubeDynamic","wrappingToGL","filterToGL","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","createFramebuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","Group","WebXRController","_targetRay","_grip","WebXRManager","framebufferScaleFactor","referenceSpace","referenceSpaceType","pose","controllers","inputSourcesMap","Map","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","inputSource","onSessionEnd","forEach","disconnect","setFramebuffer","animation","isPresenting","onRequestReferenceSpace","updateInputSources","inputSources","removed","added","getController","getTargetRaySpace","getControllerGrip","getGripSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","setSession","getContextAttributes","layerInit","antialias","baseLayer","XRWebGLLayer","updateRenderState","requestReferenceSpace","then","cameraLPos","cameraRPos","updateCamera","getCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","onAnimationFrameCallback","getViewerPose","views","cameraVRNeedsUpdate","transform","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","domElement","sortObjects","toneMappingExposure","toneMappingWhitePoint","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","getTargetPixelRatio","contextAttributes","xrCompatible","onContextLost","onContextRestore","message","initGLContext","preventDefault","onMaterialDispose","releaseMaterialProgramReference","deallocateMaterial","programInfo","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","pixelRatio","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","method","setTransparentSort","bits","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","normalArray","uvArray","colorArray","tempScene","setProgram","updateBuffers","rangeFactor","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","geometryAttribute","isInstancedInterleavedBuffer","maxInstancedCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","compiled","initMaterial","projectObject","isGroup","isLOD","isImmediateRenderObject","renderObjects","isArrayCamera","camera2","renderObjectImmediate","materialProperties","lightsStateVersion","programCacheKey","programChange","numSupportedMorphTargets","numSupportedMorphNormals","needsLights","isMeshLambertMaterial","isMeshToonMaterial","isMeshPhongMaterial","isShadowMaterial","materialNeedsLights","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","isOrthographicCamera","boneTexture","boneMatrices","boneTextureSize","isFog","density","refreshUniformsFog","refreshUniformsCommon","refreshUniformsLambert","refreshUniformsToon","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsStandard","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","uvScaleMap","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","ltc_1","LTC_1","ltc_2","LTC_2","uv2ScaleMap","window","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","FogExp2","Fog","InterleavedBuffer","inputPose","gripPose","targetRay","grip","getPose","targetRaySpace","gripSpace","isInterleavedBuffer","_geometry","_vector$6","InterleavedBufferAttribute","interleavedBuffer","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA$1","_vB$1","_vC$1","_uvA$1","_uvB$1","_uvC$1","Sprite","transformVertex","vertexPosition","mvPosition","_v1$4","_v2$2","LOD","_currentLevel","levels","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","addLevel","getCurrentLevel","getObjectForDistance","bind","calculateInverses","normalizeSkinWeights","skinWeight","basePosition","skinIndex","weight","boneIndex","boneInverses","_offsetMatrix","_identityMatrix","Skeleton","Bone","bone","isBone","getBoneByName","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","linecap","linejoin","getMatrixAt","raycastTimes","instanceId","setMatrixAt","_start","_end","_inverseMatrix$1","_ray$1","_sphere$2","Line","computeLineDistances","positionAttribute","threshold","params","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","nbVertices","_start$1","_end$1","LineSegments","LineLoop","_inverseMatrix$2","_ray$2","_sphere$3","_position$1","Points","testPoint","rayPointDistanceSq","intersectPoint","distanceToRay","VideoTexture","video","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","o","ol","edge1","edge2","edge","edges","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","EPS","pu","pv","sliceCount","PolyhedronGeometry","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","subdivide","applyRadius","centroid","uvA","uvB","uvC","azi","correctUVs","correctSeam","generateUVs","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","P","generateSegment","getPointAt","N","B","generateIndices","generateBufferData","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","readyState","HAVE_CURRENT_DATA","isCanvasTexture","Earcut","holeIndices","dim","invSize","hasHoles","outerLen","outerNode","linkedList","prev","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","last","sum","signedArea","insertNode","removeNode","again","area","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","px","py","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","Node","an","bp","ShapeUtils","contour","isClockWise","pts","triangulateShape","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","ExtrudeBufferGeometry","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","ahole","hl","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","reverse","concat","scalePt2","pt","vec","bs","vert","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","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","layer","buildLidFaces","buildSideFaces","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","text","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","segment","radiusStep","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","base","inverseSegments","n1","n2","ShapeGeometry","ShapeBufferGeometry","shapeHole","indexOffset","shapeVertices","shapeHoles","toJSON$1","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","freeze","__proto__","BoxGeometry","RawShaderMaterial","Materials","AnimationUtils","arraySlice","from","to","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","getValueSize","minStartTime","shift","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","find","referenceValue","startIndex","interpolant","createInterpolant","evaluate","resultBuffer","numTimes","valueStart","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","parseKeyframeTrack","json","trackType","typeName","toLowerCase","getTrackTypeForValueTypeName","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","settings","DefaultSettings_","getSettings_","copySampleValue_","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","getInterpolation","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","factoryMethod","timeOffset","timeScale","startTime","endTime","nKeys","validate","valid","prevTime","currTime","optimize","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","jsonTracks","frameTime","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","parseAnimation","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","global","DefaultLoadingManager","Loader","manager","crossOrigin","resourcePath","load","loadAsync","Promise","resolve","reject","setCrossOrigin","setPath","setResourcePath","loading","FileLoader","AnimationLoader","CompressedTextureLoader","DataTextureLoader","ImageLoader","CubeTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","cached","setTimeout","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","request","XMLHttpRequest","header","open","callbacks","withCredentials","overrideMimeType","requestHeader","setRequestHeader","send","setResponseType","setWithCredentials","setMimeType","loadTexture","texDatas","loaded","mipmapCount","isCubemap","texData","onImageLoad","onImageError","substr","urls","isJPEG","search","getPoint","optionalTarget","getUtoTmapping","getPoints","divisions","getLength","lengths","getLengths","cacheArcLengths","current","updateArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","getTangent","pt1","pt2","getTangentAt","mat","MAX_VALUE","tz","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","CatmullRomCurve3","curveType","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","isCatmullRomCurve3","intPoint","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","CurvePath","curves","autoClose","Path","currentPoint","Shape","Light","HemisphereLight","LightShadow","_frameExtents","_viewportCount","_viewports","SpotLightShadow","SpotLight","power","PointLightShadow","_cubeDirections","_cubeUps","PointLight","OrthographicCamera","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","LightProbe","MaterialLoader","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","absarc","absellipse","ellipse","firstPoint","lastPoint","getPointsHoles","holesPts","_lightPositionWorld","_lookTarget","shadowMatrix","projScreenMatrix","lookTarget","lightPositionWorld","viewportIndex","isSpotLightShadow","scaleW","scaleH","isDirectionalLightShadow","isSphericalHarmonics3","zero","getAt","coeff","getIrradianceAt","addScaledSH","getBasisAt","shBasis","getTexture","shading","setTextures","LoaderUtils","decodeText","TextDecoder","decode","fromCharCode","escape","extractUrlBase","lastIndexOf","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","typedArray","TYPED_ARRAYS","bufferAttribute","drawcalls","offsets","ObjectLoader","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseAnimations","bufferGeometryLoader","details","geometryShapes","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularRefractionMapping","SphericalReflectionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","Font","createPath","char","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","familyName","FontLoader","setOptions","res","blob","imageBitmap","catch","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","paths","chars","line_height","yMax","yMin","underlineThickness","ret","createPaths","substring","AudioContext","webkitAudioContext","AudioLoader","HemisphereLightProbe","sky","ground","AmbientLightProbe","bufferCopy","decodeAudioData","audioBuffer","isHemisphereLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","Clock","autoStart","oldTime","elapsedTime","running","eyeSep","_cache","xmin","xmax","eyeSepHalf","eyeSepOnProjection","ymax","performance","Date","now","getElapsedTime","getDelta","newTime","_position$2","_quaternion$3","_scale$1","_orientation","AudioListener","gain","createGain","connect","destination","timeDelta","_clock","Audio","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","filters","removeFilter","getFilter","setFilter","getMasterVolume","setMasterVolume","setTargetAtTime","currentTime","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","getOutput","setNodeSource","audioNode","setMediaElementSource","mediaElement","createMediaElementSource","setMediaStreamSource","mediaStream","createMediaStreamSource","setBuffer","play","delay","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","pause","getFilters","setFilters","getDetune","getPlaybackRate","getLoop","setLoop","setLoopStart","setLoopEnd","getVolume","setVolume","_position$3","_quaternion$4","_scale$2","_orientation$1","PositionalAudio","panner","createPanner","panningModel","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","setDirectionalCone","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","getFrequencyData","getByteFrequencyData","getAverageFrequency","accumulate","accuIndex","currentWeight","mix","accumulateAdditive","weightAdditive","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","fill","targetIndex","copyWithin","workOffset","_reservedRe","RegExp","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","node","findNode","nodeName","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","AnimationMixer","root","_root","_initMemoryManager","_accuIndex","Uniform","InstancedInterleavedBuffer","Raycaster","PointCloud","ascSort","intersectObject","Spherical","firstValidIndex","nCachedObjects_","bindings","unbind","isAnimationObjectGroup","sanitizeNodeName","matches","results","objectName","objectIndex","propertyIndex","lastDot","searchNodeSubtree","childNode","subTreeNode","_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","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","_activateAction","_deactivateAction","stopFading","stopWarping","isRunning","_isActiveAction","isScheduled","startAt","setEffectiveWeight","getEffectiveWeight","fadeIn","_scheduleFading","fadeOut","crossFadeFrom","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","crossFadeTo","fadeInAction","weightInterpolant","_takeBackControlInterpolant","setEffectiveTimeScale","getEffectiveTimeScale","setDuration","syncWith","action","halt","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","getMixer","getClip","getRoot","_update","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","setTime","timeInSeconds","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","setFromCamera","coords","intersectObjects","other","makeSafe","setFromCartesianCoords","_vector$7","Box2","_startP","_startEnd","Line3","ImmediateRenderObject","distanceSq","closestPointToPointParameter","clampToLine","startEnd2","_vector$8","SpotLightHelper","cone","coneLength","coneWidth","_vector$9","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","boneList","PointLightHelper","sphereSize","isSkeletonHelper","_vector$a","_color1","_color2","HemisphereLightHelper","GridHelper","PolarGridHelper","radials","circles","_v1$5","_v2$3","_v3$1","DirectionalLightHelper","lightPlane","targetLine","_vector$b","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_box$3","BoxHelper","Box3Helper","PlaneHelper","_lineGeometry","_coneGeometry","_axis","ArrowHelper","headLength","headWidth","setDirection","AxesHelper","setColor","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","LOD_MAX","ENCODINGS","_flatCamera","_lodPlanes","_sizeLods","_sigmas","lod","sizeLod","sigma","texelSize","positionSize","uvSize","faceIndexSize","coordinates","_createPlanes","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_pingPongRenderTarget","_blurMaterial","weights","poleAxis","shaderMaterial","_getBlurShader","_equirectShader","_cubemapShader","_compileMaterial","_isLDR","_createRenderTarget","cubeUVRenderTarget","_setViewport","_getEquirectShader","_getCubemapShader","fromScene","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","fromEquirectangular","equirectangular","fromCubemap","cubemap","_textureToCubeUV","compileCubemapShader","compileEquirectangularShader","outputTarget","tmpScene","cubeCamera","upSign","forwardSign","maxComponent","fExp","log2","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurScene","blurUniforms","pixels","radiansPerPixel","sigmaPixels","exp","outputSize","Spline","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","Handlers","setTexturePath","empty","isIntersectionBox","isIntersectionSphere","setFromMatrix","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","barycoordFromPoint","midpoint","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","applyMatrix","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","computeOffsets","removeAttribute","linePrecision","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","renderReverseSided","renderSingleSided","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","revision","invariant","condition","args","_len","_key","argIndex","framesToPop","_typeof","Symbol","iterator","obj","_possibleConstructorReturn","self","ReferenceError","_classCallCheck","instance","Constructor","StateContext","createReactContext","Container","CONTAINER_DEBUG_CALLBACKS","updater","_this2","nextState","promises","all","subscribe","fn","unsubscribe","DUMMY_STATE","Subscribe","_React$Component","_temp","_this3","instances","unmounted","subClass","superClass","writable","setPrototypeOf","_inherits","componentWillUnmount","_unsubscribe","_this4","_createInstances","containers","_this5","safeMap","ContainerItem","_this6","React","createElement","Consumer","props","Component","Provider","parentMap","childMap","inject","_console","alreadyWarned","warnOnce","_len2","_key2","loadedClb","i18n","isInitialized","on","initialized","off","loadNamespaces","ns","loadLanguages","lng","oldI18nextHasLoadedNamespace","languages","fallbackLng","lastLng","loadNotPending","loadState","services","backendConnector","bindI18n","backend","isLanguageChangingTo","hasResourceBundle","resources","partialBundledLanguages","hasLoadedNamespace","isNewerI18next","ignoreJSONStructure","precheck","i18nInstance","getDisplayName","displayName","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defaultOptions","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","unescape","getDefaults","getI18n","initReactI18next","setDefaults","react","setI18n","I18nContext","createContext","ReportNamespaces","usedNamespaces","_createClass","namespaces","usePrevious","ignore","ref","useRef","useEffect","useTranslation","i18nFromProps","_ref","useContext","i18nFromContext","defaultNSFromContext","defaultNS","reportNamespaces","notReadyT","optsOrDefaultValue","defaultValue","retNotReady","ready","wait","i18nOptions","keyPrefix","addUsedNamespaces","initializedStoreOnce","every","getT","getFixedT","nsMode","_useState","useState","_useState2","_slicedToArray","setT","joinedNS","previousJoinedNS","isMounted","boundReset","store","isInitial","_excluded","withTranslation","WrappedComponent","I18nextWithTranslation","forwardedRef","rest","_objectWithoutProperties","_useTranslation","_useTranslation2","passDownProps","tReady","withRef","forwardRefReact","__esModule","default","_defineProperty2","descriptor","protoProps","staticProps","_typeof2","_typeof3","_setPrototypeOf2","_interopRequireDefault","_create2","arrayByteLength","arraysToBytes","arr","resultLength","pos","item","stringToBytes","itemLength","byteLength","assert","bytesToString","bytes","strBuf","chunkEnd","chunk","createPromiseCapability","capability","isSettled","promise","reason","getVerbosityLevel","verbosity","msg","VerbosityLevel","INFOS","isArrayBuffer","isArrayEqual","arr1","arr2","isBool","isEmptyObj","isNum","isString","isSameOrigin","baseUrl","otherUrl","URL","createValidAbsoluteUrl","absoluteUrl","protocol","_isValidProtocol","ex","removeNullCharacters","str","NullCharactersRegExp","setVerbosityLevel","string32","stringToPDFString","code","PDFStringTranslateTable","stringToUTF8String","utf8StringToString","encodeURIComponent","unreachable","IsEvalSupportedCached","IsLittleEndianCached","createObjectURL","FormatError","Util","UnknownErrorException","UnexpectedResponseException","TextRenderingMode","StreamType","PermissionFlag","PasswordResponses","PasswordException","NativeImageDecoding","MissingPDFException","InvalidPDFException","AbortException","CMapCompressionType","ImageKind","FontType","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","UNSUPPORTED_FEATURES","OPS","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","BaseException","NONE","DECODE","DISPLAY","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","CANCELLED","COMPLETED","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","BINARY","STREAM","dependency","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","curveTo","curveTo2","curveTo3","rectangle","stroke","closeStroke","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","NEED_PASSWORD","INCORRECT_PASSWORD","cond","prop","buffer8","isLittleEndian","isEvalSupported","rgbBuf","m1","m2","applyTransform","first","second","rect","rect1","rect2","compare","orderedX","orderedY","normalizeRect","digits","contentType","forceDataSchema","ii","b3","MAP","MARKER","MARKER_WITH_LABEL","RECTANGLE","KML_LAYER","DIRECTIONS_RENDERER","HEATMAP_LAYER","FUSION_TABLES_LAYER","ANCHOR","INFO_WINDOW","OVERLAY_VIEW","GROUND_LAYER","DRAWING_MANAGER","SEARCH_BOX","MARKER_CLUSTERER","INFO_BOX","TRAFFIC_LAYER","STREET_VIEW_PANORAMA","BICYCLING_LAYER","_bind3","_isFunction3","_reduce4","_forEach3","_lowerFirst3","_has3","rdcUncontrolledAndControlledProps","acc","prevProps","unprefixedKey","nextProps","applyUpdaterToNextProps","updaterMap","nextValue","registerEvents","component","eventMap","registeredList","googleEventName","onEventName","google","maps","addListener","unregisterAllEvents","unregisterEvent","registered","removeListener","propTypes","componentDidMount","componentDidUpdate","toPropertyKey","val","isUndefined","isObject","isFunction","isBuffer","isFormData","FormData","isArrayBufferView","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","assignValue","deepMerge","extend","thisArg","freeGlobal","freeSelf","useIsomorphicLayoutEffect","useLayoutEffect","_defineProperties","core","__e","check","_isMBTransition","TouchTransition","createTransition","touches","MouseTransition","_createForOfIteratorHelper","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","done","_e","it","normalCompletion","didErr","_e2","return","PreviewList","register","preview","previews","unregister","backendChanged","_step","_iterator","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_default","sourceOptions","isSetUp","addEventListeners","backends","teardown","removeEventListeners","connectDragSource","connectBackend","connectDragPreview","connectDropTarget","_len3","_key3","previewEnabled","transition","backendSwitcher","oldBackend","some","nodes","handler","callBackend","newBackend","skipDispatchOnTransition","newEvent","createEvent","initEvent","bubbles","cancelable","_this$backends$_this$","nodeId","_this$nodes$nodeId","Boolean","MultiBackend","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","propertyIsEnumerable","pdfjsSharedUtil","pdfjsDisplayAPI","pdfjsDisplayTextLayer","pdfjsDisplayAnnotationLayer","pdfjsDisplayDisplayUtils","pdfjsDisplaySVG","pdfjsDisplayWorkerOptions","pdfjsDisplayAPICompatibility","isNodeJS","PDFNodeStream","setPDFNetworkStreamFactory","PDFNetworkStream","PDFFetchStream","isFetchSupported","isValidFetchUrl","build","getDocument","LoopbackPort","PDFDataRangeTransport","PDFWorker","renderTextLayer","AnnotationLayer","SVGGraphics","RenderingCancelledException","getFilenameFromUrl","LinkTarget","addLinkAttributes","loadScript","PDFDateString","GlobalWorkerOptions","apiCompatibilityParams","uid","USE_SYMBOL","_assertThisInitialized","_setPrototypeOf","_getPrototypeOf","getPrototypeOf","_toArray","ownKeys$6","_objectSpread$6","consoleLogger","baseLogger","Logger","concreteLogger","logger","bool","forward","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","events","cloned","observer","_cloned","defer","rej","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","stack","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","isIE10","userAgentData","userAgent","deepFind","keySeparator","endsWith","joinedPath","ownKeys$5","_objectSpread$5","_createSuper$3","Derived","hasNativeReflectConstruct","Reflect","sham","Proxy","valueOf","_isNativeReflectConstruct$3","Super","NewTarget","ResourceStore","_EventEmitter","_super","silent","addNamespaces","emit","addResource","deep","pack","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","postProcessor","processors","addPostProcessor","handle","translator","processor","process","ownKeys$4","_objectSpread$4","_createSuper$2","_isNativeReflectConstruct$2","checkedLoadedFor","Translator","language","resolved","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","resUsedKey","resExactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","option","capitalize","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","deprecatedJsonVersions","suffixesOrder","one","two","few","many","createRules","rules","numbers","plurals","PluralResolver","compatibilityJSON","Intl","PluralRules","_unused","rule","getRule","resolvedOptions","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","prepend","number","select","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","includes","ownKeys$3","_objectSpread$3","deepFindWithDefaults","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","elem","reduce","ownKeys$2","_objectSpread$2","parseFormatStr","formatStr","formatName","formatOptions","optStr","currency","opt","_opt$split2","createCachedFormatter","formatter","Formatter","formats","NumberFormat","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","_format","mem","_parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$1","_objectSpread$1","_createSuper$1","_isNativeReflectConstruct$1","Connector","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","errors","addResourceBundle","_getLastOfPath2","pushPath","removePending","loadedKeys","fcName","tried","resolver","read","queueLoad","loadOne","prepareLoading","fallbackValue","isUpdate","clb","opts","initImmediate","preload","tDescription","transformOptions","_createSuper","_isNativeReflectConstruct","noop","bindMemberFunctions","inst","getOwnPropertyNames","I18n","modules","external","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","changeLanguage","usedCallback","append","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","async","detect","fixedT","resultKey","_this$translator","_this$translator2","exists","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","createInstance","reloadResources","use","setDefaultNamespace","__g","ctx","hide","$export","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","C","virtual","R","U","anObject","IE8_DOM_DEFINE","toPrimitive","dP","O","Attributes","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","useDragDropManager","dragDropManager","DndContext","baseIsNative","shallowEqual","objA","objB","compareContext","compareResult","keysA","keysB","bHasOwnProperty","valueA","valueB","createDesc","IObject","defined","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","is","bitmap","getRawTag","objectToString","symToStringTag","toStringTag","isRef","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","proto","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","isSubscribed","dispatch","replaceReducer","nextReducer","outerSubscribe","observeState","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","strictEquality","areCoordsEqual","offsetA","offsetB","areArraysEqual","isEqual","initialState","initialSourceClientOffset","initialClientOffset","clientOffset","payload","sourceClientOffset","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","without","items","input","xor","itemsA","itemsB","insertItem","itemType","sourceId","targetIds","dropResult","didDrop","isSourcePublic","targetId","ALL","areDirty","dirtyIds","handlerIds","_action$payload","_action$payload$targe","_action$payload$prevT","prevTargetIds","didChange","prevInnermostTargetId","innermostTargetId","dirtyHandlerIds","dragOffset","refCount","dragOperation","stateId","__IS_NONE__","__IS_ALL__","setClientOffset","ResetCoordinatesAction","createBeginDrag","sourceIds","publishSource","_options$publishSourc","getSourceClientOffset","monitor","getMonitor","registry","getRegistry","verifyInvariants","getDraggableSource","verifyGetSourceClientOffsetIsFunction","getSource","beginDrag","verifyItemIsObject","pinSource","getSourceType","isDragging","canDragSource","createPublishDragSource","matchesType","targetType","draggedItemType","createHover","targetIdsArg","verifyTargetIdsIsArray","checkInvariants","getItemType","removeNonMatchingTargetIds","hoverAllTargets","getTarget","getTargetType","hover","createDrop","getDroppableTargets","determineDropResult","drop","verifyDropResultType","getDropResult","getTargetIds","canDropOnTarget","createEndDrag","verifyIsDragging","getSourceId","endDrag","unpinSource","subtract","HandlerRole","DragDropMonitorImpl","prevStateId","handleChange","currentStateId","previousState","canDrag","canDrop","shallow","_getSourceClientOffset","_getDifferenceFromInitialOffset","nextUniqueId","validateType","allowArray","_arrayWithHoles","_arr","_n","_d","_s","_i","_iterableToArrayLimit","_nonIterableRest","getNextHandlerId","role","SOURCE","TARGET","parseRoleFromHandlerId","handlerId","mapContainsValue","searchValue","entries","isDone","_entries$next","HandlerRegistryImpl","types","dragSources","dropTargets","pinnedSourceId","pinnedSource","validateSourceContract","_addSource","validateTargetContract","_addTarget","includePinned","isSourceId","isPinned","isTargetId","_removeSource","asap","_removeTarget","makeStoreInstance","debugMode","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","DragDropManagerImpl","handleRefCountChange","shouldSetUp","publishDragSource","createDragDropActions","boundActions","actionCreator","createDragDropManager","backendFactory","globalContext","backendOptions","receiveBackend","createDndContext","_withScriptjs","_withGoogleMap","_GoogleMap","_Circle","_Marker","_Polyline","_Polygon","_Rectangle","_InfoWindow","_OverlayView","_GroundOverlay","_DirectionsRenderer","_FusionTablesLayer","_KmlLayer","_TrafficLayer","_StreetViewPanorama","_BicyclingLayer","$keys","enumBugKeys","baseRest","createWrap","getHolder","replaceHolders","partials","bitmask","holders","baseGetTag","tag","baseCreate","Ctor","thisBinding","reIsUint","resIndex","isObjectLike","arrayLikeKeys","baseKeys","isArrayLike","isLength","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entry","eq","nativeCreate","getNative","isKeyable","__data__","isSymbol","hasOwn","classNames","classes","arg","argType","inner","canUseDOM","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getPostClones","getPreClones","getTrackLeft","getTrackAnimateCSS","getTrackCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","swipeEnd","swipeMove","swipeStart","keyHandler","changeSlide","slideHandler","initializedState","extractObject","canGoNext","getSwipeDirection","getHeight","getWidth","lazySlidesOnRight","lazySlidesOnLeft","lazyEndIndex","lazyStartIndex","getRequiredLazySlides","getOnDemandLazySlides","_react","_reactDom","spec","onDemandSlides","endIndex","slideIndex","lazyLoadedList","requiredSlides","currentSlide","centerMode","slidesToShow","centerPadding","offsetWidth","offsetHeight","touchObject","xDist","yDist","swipeAngle","verticalSwiping","startX","curX","startY","curY","canGo","infinite","slideCount","newObject","slideWidth","Children","listWidth","findDOMNode","listRef","trackWidth","trackRef","vertical","centerPaddingAdj","slideHeight","querySelector","listHeight","initialSlide","rtl","slidesToLoad","autoplaying","waitForAnimate","animating","fade","lazyLoad","slidesToScroll","useCSS","finalSlide","animationLeft","finalLeft","animationSlide","trackStyle","swipeLeft","previousInt","slideOffset","targetSlide","accessibility","tagName","keyCode","swipe","draggable","dragging","pageX","clientX","pageY","clientY","scrolling","swipeToSlide","edgeFriction","edgeDragged","onEdge","swiped","swiping","swipeEvent","curLeft","swipeLength","verticalSwipeLength","positionOffset","dotCount","swipeDirection","touchSwipeLength","touchThreshold","onSwipe","minSwipe","newSlide","currentLeft","breakpoint","counter","indexes","navigables","prevNavigable","centerOffset","swipedSlide","slides","querySelectorAll","slide","offsetTop","offsetLeft","currentIndex","dataset","keysArray","trackHeight","trackChildren","WebkitTransition","useTransform","WebkitTransform","msTransform","attachEvent","marginTop","marginLeft","speed","cssEase","unslick","targetLeft","variableWidth","slidesToOffset","targetSlideIndex","trackElem","childNodes","link","rel","_util","urlNullRemoved","href","title","onclick","targetStr","SELF","BLANK","PARENT","TOP","anchor","query","script","onload","onerror","head","documentElement","appendChild","deprecated","releaseImageResources","img","Image","startsWith","revokeObjectURL","StatTimer","DOMSVGFactory","DOMCMapReaderFactory","DOMCanvasFactory","DEFAULT_LINK_REL","PageViewport","SVG_NS","canvasAndContext","compressionType","baseURI","ok","statusText","cMapData","arrayBuffer","onreadystatechange","DONE","responseText","svg","_ref3","viewBox","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","applyInverseTransform","Response","ReadableStream","pdfDateStringRegex","started","timeEnd","outBuf","longest","padEnd","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","versions","useCollector","collect","collected","setCollected","updateCollected","useCallback","registerTarget","addTarget","removeTarget","registerSource","addSource","removeSource","useMonitorOutput","onCollect","_useCollector2","getHandlerId","subscribeToStateChange","setRef","cloneWithRef","newRef","previousRef","cloneElement","throwIfCompositeComponentElement","wrapConnectorHooks","hooks","wrappedHooks","hook","wrappedHook","elementOrNode","isValidElement","wrapHookToRecognizeElement","ponyfill","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","nextTick","browser","env","argv","once","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","boundClass","boundMethod","definingProperty","boundFn","shared","copyright","aFunction","that","dPs","IE_PROTO","createDict","iframeDocument","iframe","display","contentWindow","write","lt","close","Properties","def","TAG","stat","LIBRARY","wksExt","$Symbol","overRest","setToString","objectCreate","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","reIsDeepProp","reIsPlainProp","createResponseStatusError","extractFilenameFromHeader","getResponseHeader","contentDisposition","filename","_content_disposition","getFilenameFromContentDispositionHeader","validateRangeRequestCapabilities","isHttp","rangeChunkSize","disableRange","returnValues","allowRangeRequests","suggestedLength","validateResponseStatus","_inputRange","createChangeEmitter","listen","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","_makeRequestCallJs","AsapQueue","enqueueTask","task","requestFlush","flushing","pendingErrors","capacity","flush","scan","newLength","registerPendingError","requestErrorThrow","makeRequestCall","makeRequestCallFromTimer","_rawTaskJs","TaskFactory","tasks","freeTasks","RawTask","encode","paramsSerializer","serializedParams","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","defaults","adapter","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","requestData","requestHeaders","auth","username","password","Authorization","btoa","fullPath","baseURL","responseURL","responseHeaders","getAllResponseHeaders","onabort","ontimeout","timeoutErrorMessage","cookies","xsrfValue","onDownloadProgress","onUploadProgress","cancelToken","cancel","abort","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","axiosKeys","otherKeys","Cancel","Label","labelValue","formatLabel","_react2","className","labelContainer","_propTypes2","isRequired","objectOf","ObjectProto","_iterator2","_symbol2","$at","iterated","_t","redefine","Iterators","$iterCreate","setToStringTag","ITERATOR","BUGGY","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","toIObject","arrayIndexOf","names","cof","toInteger","hiddenKeys","pIE","gOPD","baseSetToString","shortOut","funcToString","nativeNow","lastCalled","stamp","remaining","metaMap","baseSetData","composeArgs","composeArgsRight","countHolders","createCtor","createRecurry","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isCurried","isFlip","wrapper","holdersCount","newHolders","nativeMax","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","LodashWrapper","chainAll","__chain__","__index__","__values__","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","iteratee","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","setStatic","BaseComponent","setDisplayName","Component$$1","wrapDisplayName","hocName","mapProps","propsMapper","factory","createFactory","classCallCheck","_extends","inherits","objectWithoutProperties","possibleConstructorReturn","withProps","pick","withPropsOnChange","shouldMapOrKeys","shouldMap","_Component","WithPropsOnChange","computedProps","componentWillReceiveProps","mapValues","withHandlers","WithHandlers","_initialiseProps","cachedHandlers","createHandler","handlerName","cachedHandler","defaultProps","DefaultProps","ownerProps","omit","renameProp","oldName","newName","_babelHelpers$extends","renameProps","nameMap","_","flattenProp","propName","withState","stateName","stateUpdaterName","WithState","stateValue","updateStateValue","updateFn","withStateHandlers","stateUpdaters","WithStateHandlers","shouldComponentUpdate","propsChanged","stateChanged","mayBeEvent","persist","withReducer","dispatchName","WithReducer","initializeStateValue","branch","leftFactory","rightFactory","renderComponent","Nothing","renderNothing","shouldUpdate","ShouldUpdate","pure","hoc","onlyUpdateForKeys","propKeys","onlyUpdateForPropTypes","withContext","childContextTypes","getChildContext","WithContext","contextTypes","GetContext","lifecycle","Lifecycle","isClassComponent","toClass","baseComponent","ToClass","setPropTypes","funcs","createSink","Sink","componentWillMount","componentFromProp","Components","factories","Nest","reduceRight","hoistStatics","higherOrderComponent","NewComponent","hoistNonReactStatics","_config","fromESObservable","toESObservable","configureObservable","stream","componentFromStreamWithConfig","config$$1","propsToVdom","ComponentFromStream","_config$fromESObserva","vdom","propsEmitter","props$","vdom$","subscription","componentFromStream","identity$1","mapPropsStreamWithConfig","childProps","mapPropsStream","createEventHandlerWithConfig","emitter","createEventHandler","baseForOwn","baseEach","createBaseEach","baseIsArguments","objectProto","isArguments","stubFalse","freeExports","nodeType","freeModule","Buffer","webpackPolyfill","deprecate","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","baseIsEqualDeep","baseIsEqual","customizer","SetCache","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","srcValue","castPath","toKey","isKey","stringToPath","baseToString","isIndex","hasFunc","reHasUnicode","baseAssignValue","objValue","each","collection","compatibilityParams","isIE","isIOSChrome","disableCreateObjectURL","disableFontFace","nativeImageDecoderSupport","workerPort","workerSrc","fieldContentRegExp","serializeCookie","maxAge","domain","expires","toUTCString","httpOnly","secure","sameSite","cookie","minutes","cookieOptions","getTime","nameEQ","ca","cookie$1","lookup","lookupCookie","cookieMinutes","cookieDomain","querystring","location","lookupQuerystring","hasLocalStorageSupport","localStorageAvailable","localStorage","setItem","removeItem","lookupLocalStorage","getItem","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","pathname","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","hostname","Browser","detectors","caches","excludeCacheFor","convertDetectedLanguage","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","_fscreen2","FullScreen","fullScreenElement","detectFullScreen","handleProps","fullscreenElement","leaveFullScreen","enterFullScreen","onChange","fullscreenEnabled","requestFullscreen","exitFullscreen","createEventEmitter","uniqueId","_Provider$childContex","_Consumer$contextType","contextProp","_Component2","_temp2","_asapJs","_typesJs","_asapQueueJs","_taskFactoryJs","OutlineEffect","defaultThickness","defaultColor","defaultAlpha","defaultKeepAlive","originalMaterials","originalOnBeforeRenders","uniformsOutline","outlineThickness","outlineColor","outlineAlpha","getOutlineMaterial","originalMaterial","outlineMaterial","used","keepAlive","getOutlineMaterialFromCache","outlineParameters","updateOutlineMaterial","isCompatible","setOutlineMaterial","restoreOriginalMaterial","thickness","updateUniforms","currentAutoClear","renderOutline","currentSceneAutoUpdate","currentSceneBackground","currentShadowMapEnabled","cleanupCache","REACT_STATICS","getDefaultProps","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","symbolObservablePonyfill","MouseEvent","initMouseEvent","saveAs","HTMLAnchorElement","webkitURL","download","msSaveOrOpenBlob","autoBom","body","innerText","HTMLElement","safari","FileReader","onloadend","readAsDataURL","OrbitControls","minDistance","minZoom","maxZoom","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","screenSpacePanning","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","UP","BOTTOM","mouseButtons","ONE","TWO","target0","position0","zoom0","getPolarAngle","spherical","getAzimuthalAngle","saveState","changeEvent","STATE","quat","quatInverse","lastPosition","lastQuaternion","rotateLeft","sphericalDelta","panOffset","zoomChanged","onContextMenu","onMouseDown","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onMouseMove","onMouseUp","onKeyDown","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","handleMouseDownPan","handleTouchStartRotate","handleTouchStartPan","handleTouchStartDolly","handleTouchMoveRotate","handleTouchMovePan","handleTouchMoveDolly","mouseAction","button","handleMouseDownDolly","ctrlKey","metaKey","shiftKey","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","stopPropagation","handleMouseWheel","handleKeyDown","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","tabIndex","MapControls","memoize","EnterLeaveCounter","isNodeInDocument","entered","enteringNode","previousLength","Set","contains","leavingNode","isFirefox","isSafari","MonotonicInterpolant","xs","ys","dys","dxs","ms","c1s","_i2","mNext","dxNext","c2s","c3s","_i3","invDx","_common","xHere","diffSq","getNodeClientOffset","el","parentElement","_el$getBoundingClient","getBoundingClientRect","getEventClientOffset","getDragPreviewOffset","sourceNode","dragPreview","anchorPoint","offsetPoint","isImage","_document$documentEle","isImageNode","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","sourceWidth","sourceHeight","anchorX","anchorY","_getDragPreviewSize","dragPreviewWidth","dragPreviewHeight","devicePixelRatio","getDragPreviewSize","isManualOffsetY","calculateYOffset","_nativeTypesConfig","FILE","getDataFromDataTransfer","dataTransfer","typesToTry","resultSoFar","typeToTry","nativeTypesConfig","NativeTypes","exposeProperties","matchesTypes","NativeDragSource","initializeExposedProperties","newProperties","matchNativeItemType","dataTransferTypes","nativeItemType","OptionsReader","ListenerType","HTML5BackendImpl","sourcePreviewNodes","sourcePreviewNodeOptions","sourceNodes","sourceNodeOptions","dragStartSourceIds","dropTargetIds","dragEnterTargetIds","currentNativeSource","currentNativeHandle","currentDragSourceNode","altKeyPressed","mouseMoveTimeoutTimer","asyncEndDragFrameId","dragOverTargetIds","endDragNativeItem","isDraggingNativeItem","endDragIfSourceWasRemovedFromDOM","clearCurrentDragSourceNode","handleTopDragStartCapture","handleTopDragStart","defaultPrevented","nativeType","setDragImage","_this$getCurrentSourc","getCurrentSourcePreviewNodeOptions","dragPreviewOffset","setCurrentDragSourceNode","captureDraggingState","beginDragNativeItem","hasAttribute","handleTopDragEndCapture","handleTopDragEnterCapture","enterLeaveCounter","enter","handleTopDragEnter","altKey","dropEffect","getCurrentDropEffect","handleTopDragOverCapture","handleTopDragOver","handleTopDragLeaveCapture","leave","handleTopDropCapture","_this$currentNativeSo","loadDataTransfer","handleTopDrop","handleSelectStart","dragDrop","isContentEditable","getActions","_this$dragStartSource","_this$dragOverTargetI","__isReactDndBackendSetUp","cancelAnimationFrame","handleDragStart","handleDragEnter","handleDragOver","handleDrop","getCurrentSourceNodeOptions","createNativeDragSource","MouseButtons","MouseButton","eventShouldStartDrag","isTouchEvent","targetTouches","lastTargetTouchFallback","getEventClientTouchOffset","supportsPassive","supported","_eventNames","incoming","enableTouchEvents","enableMouseEvents","enableKeyboardEvents","ignoreContextMenu","enableHoverOutsideTarget","touchSlop","scrollAngleRanges","delayTouchStart","delayMouseStart","eventNames","mouse","move","contextmenu","touch","keyboard","keydown","TouchBackendImpl","handleTopMoveStartCapture","moveStartSourceIds","handleMoveStart","handleTopMoveStart","_mouseClientOffset","waitingForDelay","handleTopMoveStartDelay","handleTopMoveCapture","handleMove","_evt","handleTopMove","_isScrolling","angleRanges","inAngleRanges","installSourceNodeRemovalObserver","dragOverTargetNodes","targetNodes","elementsAtPoint","getDropTargetElementsAtPoint","elementsFromPoint","elementsAtPointExtended","currentNode","orderedDragOverTargetIds","_getDropTargetId","ids","targetNode","handleTopMoveEndCapture","buttons","eventShouldEndDrag","uninstallSourceNodeRemovalObserver","handleCancelOnEscape","listenerTypes","getTopMoveStartHandler","subject","capture","passive","listenerType","evt","droppedOn","elementFromPoint","childMatch","draggedSourceNode","draggedSourceNodeRemovalObserver","MutationObserver","resurrectSourceNode","observe","childList","PreviewPortalContext","DndProvider","previewPortal","ReactDndProvider","PropTypes","any","currentOffset","pointerEvents","usePreview","collectedProps","subscribeToOffsetChange","useDragLayer","Context","sourceKeys","_objectWithoutPropertiesLoose","Preview","_usePreview","oneOfType","useObservePreviews","setEnabled","dndContext","getBackend","cbackend","portal","DnDPreview","ReactDOM","createPortal","PreviewContext","mod","aa","execScript","POSITIVE_INFINITY","bufferSize","resize","A","ba","V","D","M","E","fa","H","I","J","K","L","da","ea","ga","Q","verify","Y","Z","$","ia","X","ADAPTIVE","BLOCK","Zlib","NURBSUtils","findSpan","calcBasisFunctions","span","saved","rv","lv","calcBSplinePoint","Nj","wNj","calcBasisFunctionDerivatives","zeroArr","ders","ndu","rk","pk","j2","calcBSplineDerivatives","nd","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","textureLoader","GeometryParser","AnimationParser","TextParser","BinaryParser","BinaryReader","littleEndian","dv","FBXTree","getFbxVersion","convertFBXTimeToSeconds","FBXBuffer","CORRECT","convertArrayBufferToString","isFbxFormatBinary","FBXText","cursor","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","Content","base64Content","parseImage","content","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","skeletons","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","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","translation","Lcl_Translation","preRotation","PreRotation","Lcl_Rotation","postRotation","PostRotation","Lcl_Scaling","scalingOffset","ScalingOffset","scalingPivot","ScalingPivot","rotationOffset","RotationOffset","rotationPivot","RotationPivot","lookAtTarget","bindMatrices","parsePoseNodes","geoConnParent","BindPoseNode","Pose","poseNodes","PoseNode","poseNode","Matrix","GlobalSettings","ambientColor","AmbientColor","setupMorphMaterial","matUuid","sharedMat","clonedMat","geoNodes","parseGeometry","geoNode","parseMeshGeometry","parseNurbsGeometry","GeometricTranslation","GeometricRotation","GeometricScaling","genGeometry","preTransform","geoInfo","parseGeoNode","genBuffers","weightsIndices","vertexWeights","normalAttribute","mappingType","prevMaterialIndex","lastGroup","addMorphTargets","vertexPositions","Vertices","vertexIndices","PolygonVertexIndex","LayerElementColor","parseVertexColors","LayerElementMaterial","parseMaterialIndices","LayerElementNormal","parseNormals","LayerElementUV","parseUVs","weightTable","polygonIndex","faceLength","displayedWeightsWarning","facePositionIndexes","faceColors","faceUVs","faceWeights","faceWeightIndices","vertexIndex","polygonVertexIndex","endOfFace","weightIndices","wt","wIndex","Weight","weightIndex","comparedWeight","comparedWeightIndex","comparedWeightArray","genFace","parentGeo","parentGeoNode","rawTarget","morphGeoNode","genMorphGeometry","morphPositionsSparse","morphPositions","morphIndex","morphGeoInfo","morphBuffers","NormalNode","MappingInformationType","referenceType","ReferenceInformationType","Normals","indexBuffer","NormalIndex","NormalsIndex","dataSize","UVNode","UV","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","modelName","rawModel","initialPosition","initialRotation","initialScale","morph","deformerID","morpherID","morphName","rawStacks","AnimationStack","rawTracks","generateTracks","positionTrack","generateVectorTrack","rotationTrack","generateRotationTrack","scaleTrack","morphTrack","generateMorphTrack","initialValue","getTimesForAllAxes","getKeyframeTrackValues","interpolateRotations","quaternionValues","morphNum","prevValue","xIndex","yIndex","zIndex","xValue","yValue","zValue","valuesSpan","absoluteSpan","numSubIntervals","initialTime","interval","nextTime","interpolatedTimes","interpolatedValues","getPrevNode","nodeStack","currentIndent","getCurrentNode","getCurrentProp","currentProp","pushStack","popStack","setCurrentProp","currentPropName","allNodes","matchComment","matchEmpty","matchBeginning","matchProperty","parseNodeBegin","parseNodeProperty","parseNodePropertyContinued","nodeAttrs","attrs","parseNodeAttr","contentLine","propValue","connProps","parseNumberArray","parseNodeSpecialProperty","innerPropName","innerPropType1","innerPropType2","innerPropFlag","innerPropValue","reader","skip","getUint32","endOfContent","parseNode","getOffset","endOffset","getUint64","numProperties","nameLen","getUint8","getString","propertyList","parseProperty","singleProperty","subNode","parseSubNode","getBoolean","getFloat64","getFloat32","getInt32","getInt64","getArrayBuffer","getInt16","arrayLength","compressedLength","getBooleanArray","getFloat64Array","getFloat32Array","getInt32Array","getInt64Array","reader2","Inflate","decompress","nullByte","dataArray","infoObject","tempEuler","tempVec","lTranslationM","lPreRotationM","lRotationM","lPostRotationM","lScalingM","lScalingPivotM","lScalingOffsetM","lRotationOffsetM","lRotationPivotM","lParentGX","lGlobalT","lLRM","lParentGRM","lParentGSM","lGlobalRS","lParentLSM_inv","lParentGSM_noLocal","lRotationPivotM_inv","lScalingPivotM_inv","lTransform","lLocalTWithAllPivotAndOffsetInfo","lGlobalTranslation","enums","for","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createRef","forwardRef","lazy","_ctor","_status","_result","memo","useDebugValue","useImperativeHandle","useMemo","useReducer","ja","la","ma","oa","currentTarget","ka","pa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","setAttributeNS","Ya","Za","$a","bb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","pb","_debugOwner","_debugSource","lineNumber","rb","sb","xb","_valueTracker","stopTracking","tb","yb","checked","zb","defaultChecked","_wrapperState","initialChecked","Ab","controlled","Bb","Cb","Db","Eb","ownerDocument","activeElement","Gb","Fb","Hb","selected","defaultSelected","disabled","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","textContent","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","firstChild","removeChild","Rb","lastChild","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","Xb","Yb","Zb","$b","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","parentNode","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","bubbled","captured","eventPriority","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","md","setProperty","menuitem","br","embed","hr","keygen","param","wbr","od","pd","qd","rd","sd","td","ud","vd","nextSibling","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","Interface","isDefaultPrevented","returnValue","ee","eventPool","fe","destructor","getPooled","cancelBubble","eventPhase","timeStamp","isTrusted","ge","he","ie","je","ke","documentMode","le","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","re","se","ve","which","ue","we","date","email","tel","week","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","relatedTarget","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","$e","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","tf","changedTouches","uf","vf","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","effects","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","contextType","Mg","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","th","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","gi","getDerivedStateFromError","hi","pendingContext","ni","pi","qi","retryTime","ji","fallback","unstable_avoidThisFallback","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onClick","createTextNode","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","insertBefore","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","componentStack","Rj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","Uj","Vj","Wj","hidden","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","Jc","_internalRoot","gk","ik","hk","jk","kk","unmount","form","Lj","lk","Events","findFiberByHostInstance","isDisabled","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","arrayLikeToArray","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","bigint","symbol","arrayOf","instanceOf","oneOf","exact","checkPropTypes","fullscreenchange","fullscreenerror","fullscreen","webkit","moz","vendor","fscreen","requestFullscreenFunction","asapQueue","taskFactory","makeRequestCallFromMutationObserver","BrowserMutationObserver","WebKitMutationObserver","handleTimer","intervalHandle","setInterval","clearInterval","characterData","Axios","mergeConfig","defaultConfig","axios","instanceConfig","CancelToken","isCancel","spread","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","eject","throwIfCancellationRequested","throwIfRequested","fns","normalizedName","isAxiosError","description","columnNumber","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","originURL","msie","urlParsingNode","host","port","requestURL","toGMTString","executor","resolvePromise","token","valueTransformer","_utils","_keyCodes","InputRange","startValue","trackNode","isSliderDragging","lastKeyMoved","allowSameValues","ariaLabelledby","ariaControls","draggableTrack","maxValue","_rangePropType2","minValue","onChangeStart","onChangeComplete","_valuePropType2","_defaultClassNames2","removeDocumentMouseUpListener","removeDocumentTouchEndListener","disabledInputRange","inputRange","getClientRect","getValueFromProps","isMultiValue","getPositionsFromValues","getTrackClientRect","currentValues","isWithinRange","hasStepDifference","updatePositions","getValueFromPosition","transformedValues","getStepValueFromValue","updateValues","updateValue","handleMouseUp","handleTouchEnd","getPositionFromEvent","updatePosition","prevEvent","_props","_props$value","stepValue","prevPosition","LEFT_ARROW","DOWN_ARROW","decrementValue","RIGHT_ARROW","UP_ARROW","incrementValue","_props2","_props2$value","getKeyByPosition","isDefined","handleInteractionStart","handleInteractionEnd","addDocumentMouseUpListener","addDocumentTouchEndListener","percentages","getPercentagesFromValues","getKeys","percentage","_props3","_slider2","onSliderDrag","handleSliderDrag","onSliderKeyDown","handleSliderKeyDown","captialize","componentClassName","getComponentClassName","aria-disabled","onKeyUp","handleKeyUp","handleMouseDown","handleTouchStart","_label2","_track2","onTrackDrag","handleTrackDrag","onTrackMouseDown","handleTrackMouseDown","renderSliders","renderHiddenInputs","getPercentageFromPosition","clientRect","sizePerc","getPercentageFromValue","getPositionFromValue","valuePerStep","pointA","pointB","xDiff","yDiff","numA","numB","activeTrack","maxLabel","minLabel","slider","sliderContainer","valueLabel","Slider","removeDocumentMouseMoveListener","removeDocumentTouchMoveListener","handleMouseMove","handleTouchMove","addDocumentMouseMoveListener","addDocumentTouchMoveListener","aria-labelledby","aria-controls","aria-valuemax","aria-valuemin","aria-valuenow","Track","trackDragEvent","activeTrackStyle","getActiveTrackStyle","_objectWithoutProperties3","_getPrototypeOf2","_classCallCheck3","_createClass3","_possibleConstructorReturn3","_inherits3","withScriptjs","_invariant2","_canUseDom2","_recompose","_React$PureComponent","_ret","loadingState","isUnmounted","handleLoaded","loadingElement","googleMapURL","scriptjs","restProps","$getPrototypeOf","fails","KEY","$Object","desc","TO_STRING","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","TO_STRING_TAG","DOMIterables","Collection","addToUnscopables","_k","Arguments","DESCRIPTORS","META","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","gOPN","$JSON","_stringify","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","$defineProperty","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","NEED","fastKey","getWeak","onFreeze","gOPS","getSymbols","windowNames","getWindowNames","buggy","otherArgs","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","nativeObjectToString","isOwn","unmasked","coreJsData","maskSrcKey","createBind","createCurry","createPartial","mergeData","getFuncName","lodash","funcName","realNames","otherFunc","wrapperClone","reWrapDetails","reSplitDetails","reWrapComment","arrayEach","arrayIncludes","wrapFlags","pair","baseIndexOf","baseFindIndex","baseIsNaN","strictIndexOf","predicate","fromRight","nativeMin","oldArray","srcBitmask","newBitmask","isCommon","isCombo","toFinite","remainder","toNumber","trimmedEndIndex","reTrimStart","reWhitespace","originalModule","definition","scriptpath","urlArgs","doc","getElementsByTagName","scripts","ar","$script","idOrDone","optDone","idOrDoneIsDone","loopFn","dset","req","missing","dep","define","_defineProperty3","withGoogleMap","_warning2","_constants","handleComponentMount","containerElement","mapElement","GoogleMap","_toConsumableArray3","_MapChildHelper","_context$MAP","fitBounds","_context$MAP2","panBy","_context$MAP3","panTo","_context$MAP4","panToBounds","getBounds","getClickableIcons","getDiv","getHeading","getMapTypeId","getProjection","getStreetView","getTilt","getZoom","defaultExtraMapTypes","defaultCenter","defaultClickableIcons","defaultHeading","defaultMapTypeId","defaultStreetView","defaultTilt","defaultZoom","clickableIcons","heading","mapTypeId","streetView","tilt","onDblClick","onDragEnd","onDragStart","onMapTypeIdChanged","onMouseOut","onMouseOver","onRightClick","onTilesLoaded","onBoundsChanged","onCenterChanged","onDrag","onHeadingChanged","onIdle","onProjectionChanged","onResize","onTiltChanged","onZoomChanged","extraMapTypes","extra","_instance$mapTypes","mapTypes","setCenter","_clickableIcons","setClickableIcons","_heading","setHeading","_mapTypeId","setMapTypeId","_options","_streetView","setStreetView","_tilt","setTilt","_zoom","setZoom","_from","_from2","isArrayIter","createProperty","getIterFn","arrayLike","aLen","mapfn","iterFn","ArrayProto","classof","getIteratorMethod","ARG","tryGet","SAFE_CLOSING","riter","skipClosing","safe","arrayReduce","baseIteratee","baseReduce","accumulator","initAccum","baseFor","createBaseFor","keysFunc","iterable","baseTimes","inherited","isArr","isArg","isBuff","isType","skipIndexes","typedArrayTags","freeProcess","isPrototype","nativeKeys","overArg","eachFunc","baseMatches","baseMatchesProperty","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","assocIndexOf","pairs","LARGE_ARRAY_SIZE","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","equalArrays","equalByTag","equalObjects","getTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","setCacheAdd","setCacheHas","mapToArray","setToArray","symbolProto","symbolValueOf","byteOffset","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","arrayPush","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","isStrictComparable","hasIn","baseGet","memoizeCapped","rePropName","reEscapeChar","quote","subString","memoized","arrayMap","symbolToString","baseHasIn","hasPath","baseProperty","basePropertyDeep","castFunction","lowerFirst","createCaseFirst","castSlice","hasUnicode","stringToArray","strSymbols","chr","trailing","baseSlice","asciiToArray","unicodeToArray","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","baseHas","Circle","circle","setMap","getDraggable","getEditable","getRadius","getVisible","defaultDraggable","defaultEditable","defaultRadius","defaultVisible","editable","onRadiusChanged","_draggable","setDraggable","_editable","setEditable","_radius","setRadius","_visible","setVisible","Marker","_Marker$contextTypes","markerClusterer","addMarker","noRedraw","removeMarker","getAnimation","getClickable","getCursor","getIcon","getLabel","getOpacity","getPlace","getShape","getTitle","getZIndex","defaultAnimation","defaultClickable","defaultCursor","defaultIcon","defaultLabel","defaultOpacity","defaultPlace","defaultPosition","defaultShape","defaultTitle","defaultZIndex","clickable","icon","label","place","onAnimationChanged","onClickableChanged","onCursorChanged","onDraggableChanged","onFlatChanged","onIconChanged","onPositionChanged","onShapeChanged","onTitleChanged","onVisibleChanged","onZindexChanged","_animation","setAnimation","_clickable","setClickable","_cursor","setCursor","_icon","setIcon","_label","setLabel","_opacity","setOpacity","_place","setPlace","_shape","setShape","_title","setTitle","_zIndex","setZIndex","Polyline","polyline","defaultPath","_path","Polygon","polygon","getPaths","defaultPaths","setPaths","Rectangle","defaultBounds","bounds","_bounds","setBounds","InfoWindow","_InfoWindow$contextTy","_reactDom2","infoWindow","setContent","getContent","onCloseClick","onDomReady","onContentChanged","getMap","OverlayView","_OverlayView$contextT","_extends3","_delay3","_assign3","_OverlayViewHelper","overlayView","onAdd","draw","onRemove","onPositionElement","mapPaneName","getPanes","mapCanvasProjection","getOffsetOverride","layoutStyles","getLayoutStyles","FLOAT_PANE","MAP_PANE","MARKER_LAYER","OVERLAY_LAYER","OVERLAY_MOUSE_TARGET","getPixelPositionOffset","_assign","_assign2","$assign","baseDelay","copyObject","createAssigner","isNew","isIterateeCall","assigner","sources","guard","_isFunction2","createLatLng","Type","lat","createLatLngBounds","LatLng","sw","ensureOfType","LatLngBounds","fromLatLngToDivPixel","getNorthEast","getSouthWest","getLayoutStylesByBounds","getLayoutStylesByPosition","GroundOverlay","groundOverlay","defaultUrl","getUrl","DirectionsRenderer","directionsRenderer","getDirections","getPanel","getRouteIndex","defaultDirections","defaultPanel","defaultRouteIndex","directions","panel","routeIndex","onDirectionsChanged","_directions","setDirections","_panel","setPanel","_routeIndex","setRouteIndex","FusionTablesLayer","fusionTablesLayer","KmlLayer","kmlLayer","getDefaultViewport","getMetadata","getStatus","onDefaultViewportChanged","onStatusChanged","_url","setUrl","TrafficLayer","trafficLayer","StreetViewPanorama","streetViewPanorama","getLinks","getLocation","getMotionTracking","getPano","getPhotographerPov","getPov","defaultLinks","defaultMotionTracking","defaultPano","defaultPov","links","motionTracking","pano","pov","onPanoChanged","onPovChanged","_links","setLinks","_motionTracking","setMotionTracking","_pano","setPano","_pov","setPov","BicyclingLayer","bicyclingLayer","_innerSlider","_json2mq","_defaultProps","_innerSliderUtils","enquire","innerSlider","slickPrev","slickNext","dontAnimate","slickGoTo","autoPlay","_responsiveMediaHandlers","responsive","breakpoints","breakpt","bQuery","minWidth","maxWidth","media","newProps","resp","slidesPerRow","newChildren","currentWidth","row","InnerSlider","innerSliderRefHandler","_initialState","_lodash","_classnames","_track","_dots","_arrows","_resizeObserverPolyfill","adaptiveHeight","ssrInit","onInit","prevState","onLazyLoad","updateState","adaptHeight","lazyLoadTimer","progressiveLazyLoad","ro","onWindowResized","callbackTimers","onfocus","pauseOnFocus","onSlideFocus","onblur","onSlideBlur","animationEndCallback","timer","autoplayTimer","setTrackStyle","_Object$keys","checkImagesLoad","onReInit","debouncedResize","resizeWindow","updatedState","_trackWidth","_trackLeft","childrenWidths","preClones","postClones","_trackStyle","childrenCount","trackLeft","imagesCount","loadedCount","prevClickHandler","onLazyLoadError","_index","_this$props","asNavFor","beforeChange","afterChange","_slideHandler","firstBatch","ontouchmove","disableBodyScroll","triggerSlideHandler","enableBodyScroll","playType","autoplaySpeed","pauseType","dots","prevArrow","nextArrow","trackProps","pauseOnHover","onMouseEnter","onTrackOver","onMouseLeave","onTrackLeave","focusOnSelect","selectHandler","dotProps","pauseOnDotsHover","clickHandler","onDotsLeave","onDotsOver","Dots","arrowProps","arrows","PrevArrow","NextArrow","verticalHeightStyle","centerPaddingStyle","padding","listStyle","touchMove","listProps","onTouchCancel","innerSliderProps","listRefHandler","trackRefHandler","currentDirection","reTrim","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","getSlideClasses","slickActive","slickCenter","slickCloned","getKey","fallbackKey","renderSlides","preCloneSlides","postCloneSlides","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","preCloneNo","mouseEvents","leftBound","rightBound","dotOptions","customPaging","appendDots","dotsClass","prevClasses","prevHandler","prevArrowProps","customProps","_React$PureComponent2","nextClasses","nextHandler","nextArrowProps","MapShim","class_1","__entries__","_a","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","throttle","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","subtree","_b","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","styles","getHTMLElementContentRect","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","ResizeObserver","camel2hyphen","obj2mq","mq","features","feature","isDimension","easing","MediaQueryDispatch","MediaQuery","matchMedia","queries","browserIsIncapable","shouldDegrade","isUnconditional","QueryHandler","mql","assess","constuctor","deferSetup","initialised","unmatch","PDFPageProxy","PDFDocumentProxy","_display_utils","_font_loader","_api_compatibility","_worker_options","_is_node","_message_handler","_metadata","_transport_stream","_webgl","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","createPDFNetworkStream","pdfNetworkStreamFactory","PDFDocumentLoadingTask","rangeTransport","worker","pdfBytes","CMapReaderFactory","ignoreErrors","stopAtErrors","pdfBug","NativeImageDecoderValues","maxImageSize","disableStream","disableAutoFetch","workerParams","fromPort","_worker","docId","destroyed","_fetchDocument","workerId","networkStream","PDFDataTransportStream","initialData","progressiveDone","httpHeaders","messageHandler","MessageHandler","postMessageTransfers","transport","WorkerTransport","_transport","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","docBaseUrl","nextDocumentId","onPassword","onUnsupportedFeature","onFulfilled","onRejected","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","pdfInfo","_pdfInfo","numPages","fingerprint","getPage","pageNumber","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getOpenActionDestination","openAction","getAttachments","getJavaScript","getOutline","getPermissions","getDownloadInfo","downloadInfoCapability","getStats","cleanup","startCleanup","loadingTask","loadingParams","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","commonObjs","objs","PDFObjects","cleanupAfterRender","pendingCleanup","intentStates","userUnit","getAnnotations","intent","annotationsPromise","annotationsIntent","canvasContext","enableWebGL","renderInteractiveForms","imageLayer","canvasFactory","renderingIntent","intentState","streamReaderCancelTimeout","canvasFactoryInstance","webGLContext","WebGLContext","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","renderTasks","internalRenderTask","_tryCleanup","_abortOperatorList","InternalRenderTask","useRequestAnimationFrame","renderTask","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","normalizeWhitespace","disableCombineTextItems","sendWithStream","combineTextItems","highWaterMark","getTextContent","readableStream","getReader","pump","_destroy","pageCache","waitOn","renderCompleted","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","streamReader","_ref4","_defer","_deferred","transfers","cloneValue","terminate","PDFWorkerClosure","pdfWorkerPorts","isWorkerDisabled","fallbackWorkerSrc","nextFakeWorkerId","fakeWorkerCapability","pdfjsFilePath","currentScript","getWorkerSrc","getMainThreadWorkerMessageHandler","mainWorkerMessageHandler","globalThis","pdfjsWorker","WorkerMessageHandler","setupFakeWorkerGlobal","eval","createCDNWrapper","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","Worker","terminateEarly","onWorkerError","_setupFakeWorker","supportTransfers","sendTest","testObj","workerHandler","fontLoader","_onUnsupportedFeature","_params","cMapUrl","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","pagePromises","setupMessageHandler","page","terminated","cancelAllRequests","sink","getFullReader","onPull","_ref5","enqueue","onCancel","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_ref6","_ref7","_numPages","exception","updatePassword","exportedData","exportedError","fontRegistry","FontInspector","registerFont","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","imageUrl","rgbaLength","buf","tmpCanvas","tmpCtx","getImageData","fetched","builtInCMap","_ref8","featureId","Metadata","contentDispositionFilename","_objs","_ensureObj","objId","RenderTask","_internalRenderTask","onContinue","canvasInRendering","_ref9","operatorListIdx","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","executeOperatorList","BaseFontLoader","nativeFontFaces","styleElement","addNativeFontFace","nativeFontFace","fonts","insertRule","styleSheet","sheet","cssRules","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","fontsToLoad","loadingContext","requests","nextRequestId","loadTestFontId","otherRequest","int32","spliceString","insert","called","_loadTestFont","checksum","loadedName","div","visibility","fontFamily","isFontReady","fillText","translatedData","compiledGlyphs","FontFace","mimetype","getPathGenerator","character","cmds","js","cmd","_pattern_helper","addContextCurrentTransform","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","_originalTransform","_originalSetTransform","setTransform","_transformMatrix","_transformStack","ad_bc","bc_ad","old","cosValue","sinValue","CachedCanvases","getCanvas","trackTransform","canvasEntry","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","activeSMask","resumeSMaskCtx","setCurrentPoint","canvasCtx","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","cachedCanvases","_cachedGetSinglePixelWidth","putBinaryImageData","imgData","destPos","thisChunkHeight","elemsInThisChunk","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","composeSMask","layerCtx","maskCtx","backdrop","isEnabled","composed","subtype","composeFn","hasBackdrop","chunkSize","chunkHeight","genericComposeSMask","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","op","fillRect","transparentCanvas","compositeCtx","beginLayout","executionStartIdx","continueCallback","argsArrayLen","fnId","chunkOperations","breakIt","depObjId","objsPool","endSMaskGroup","endLayout","limit","dashArray","dashPhase","flatness","states","suspendSMaskGroup","beginSMaskGroup","drawnWidth","drawnHeight","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","startTransformInverse","mozCurrentTransformInverse","deltaTransform","clearRect","resumeSMaskGroup","ops","getSinglePixelWidth","xw","consumePath","singularValueDecompose2dScale","getPattern","needRestore","pendingTextPaths","beginPath","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","showType3Text","glyphsLength","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","scaledX","scaledY","scaledAccentX","scaledAccentY","vmetric","vx","vy","restoreNeeded","isSpace","fontChar","accent","remeasure","measuredWidth","measureText","isFontSubpixelAAEnabled","characterScaleX","isInFont","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","getShadingPatternFromIR","makeCssRgb","patternIR","inv","bl","ul","ur","isolated","knockout","getAxialAlignedBoundingBox","canvasBounds","imageSmoothingEnabled","mozImageSmoothingEnabled","domImage","getCanvasPosition","appendImage","isPatternFill","j0","width1","POINT_TYPES","lineSize","data0","outlines","jj","compileType3Glyph","maskCanvas","imgToPaint","widthScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","raw","shadingIR","ShadingIRs","fromIR","applyBoundingBox","Path2D","region","RadialAxial","colorStops","r1","grad","createLinearGradient","createRadialGradient","addColorStop","createMeshCanvas","drawTriangle","rowSize","y3","car","cag","cab","cbr","cbg","cbb","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","x1_","x2_","drawFigure","figure","ps","verticesPerRow","combinesScale","figures","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","drawFigures","owner","matrixScale","temporaryPatternCanvas","createPattern","Dummy","PaintType","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","combinedScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","clipBbox","realOutputSize","bboxWidth","bboxHeight","cssColor","CallbackKind","StreamKind","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","_createStreamSink","actionName","_postMessage","queueingStrategy","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","_deleteStreamController","allSettled","_xml_parser","_repair","xmlDocument","SimpleXMLParser","_metadataMap","_parse","rdf","hasChildNodes","getAll","XMLParserErrorCode","isWhitespace","SimpleDOMNode","_resolveEntities","entity","onResolveEntity","_parseContent","skipWs","attrValue","attrEndChar","attrEndIndex","_parseProcessingInstruction","attrStart","parseXml","onEndElement","onPi","onComment","onCdata","complexDoctype","doctypeContent","onDoctype","onBeginElement","onText","_currentFragment","_stack","_errorCode","isWhitespaceString","lastElement","_queuedChunks","_progressiveDone","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","_begin","_loaded","firstReader","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","_progressiveDataLength","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_queuedChunk","_enabled","tryInitGL","loadShader","shaderType","COMPILE_STATUS","errorMsg","createVertexShader","VERTEX_SHADER","createFragmentShader","FRAGMENT_SHADER","shaders","LINK_STATUS","TEXTURE_2D","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","RGBA","UNSIGNED_BYTE","currentGL","currentCanvas","generateGL","premultipliedalpha","smaskCache","figuresCache","resolutionLocation","positionLocation","backdropLocation","subtypeLocation","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","ARRAY_BUFFER","STATIC_DRAW","FLOAT","initSmaskGL","drawingBufferWidth","drawingBufferHeight","TEXTURE0","maskTexture","TEXTURE1","BLEND","ONE_MINUS_SRC_ALPHA","COLOR_BUFFER_BIT","TRIANGLES","scaleLocation","offsetLocation","colorLocation","initFiguresGL","coordsMap","colorsMap","pIndex","cIndex","coordsBuffer","colorsBuffer","NonWhitespaceRegexp","appendText","geom","textDiv","textDivProperties","canvasWidth","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","_textDivProperties","fontName","fontHeight","fontAscent","ascent","descent","_fontInspectorEnabled","_textContentStream","_layoutText","_enhanceTextSelection","angleCos","angleSin","divWidth","divHeight","_canceled","textDivs","textDivsLength","_renderingDone","expand","expanded","boxes","x1New","x2New","expandBoundsLTR","expandBounds","divProperties","ts","findPositiveMin","boxScale","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","_processItems","styleCache","_render","mozOpaque","textItems","textStyles","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","renderParameters","AnnotationElementFactory","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","linkService","downloadManager","imageResourcesPath","svgFactory","_createContainer","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","borderRadius","borderBottomStyle","borderColor","_createPopup","trigger","popup","PopupElement","modificationDate","contents","hideWrapper","newWindow","externalLinkTarget","externalLinkRel","externalLinkEnabled","_bindNamedAction","_bindLink","getDestinationHash","navigateTo","getAnchorUrl","executeNamedAction","hasPopup","alt","l10nId","l10nArgs","hasAppearance","fieldValue","TEXT_ALIGNMENT","multiLine","readOnly","maxLen","maxLength","comb","combWidth","classList","letterSpacing","verticalAlign","_setTextStyle","textAlignment","textAlign","fontStyle","fieldName","buttonValue","selectElement","combo","multiSelect","optionElement","displayValue","exportValue","parentType","selector","parentId","parentLeft","parentWidth","pinned","hideElement","dateObject","toDateObject","toLocaleDateString","toLocaleTimeString","_formatContents","_toggle","_show","_hide","lineCoordinates","square","containerClassName","svgElementName","coordinate","inkList","inkLists","eventBus","_download","downloadData","sortedAnnotations","popupAnnotations","annotations","SVG_DEFAULTS","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","crcTable","writePngChunk","crc","crc32","deflateSyncUncompressed","literals","deflateBlocks","idat","adler","adler32","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","deflateSync","pngLength","CHUNK_WRAPPER_SIZE","SVGExtraState","activeClipUrl","clipGroup","maskId","toFixed","pm","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opList","opTree","opListElement","opListToTree","opTreeElement","lineMatrix","xcoords","tspan","txtElement","txtgrp","charWidth","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","defs","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","inverseTransform","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","shadingId","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","colorStop","getAttributeNS","clipId","clipPath","clipElement","cloneNode","imgObj","imgEl","imgSrc","cliprect","definitions","rootGroup","_ensureClipGroup","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","RangeError","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","indexSize","valLength","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","toHex","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","b64","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","_network_utils","fs","http","https","fileUriRegex","sourceUrl","parsedUrl","parseUrl","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","handleResponse","statusCode","_request","_httpHeaders","lstat","createReadStream","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","quot","rfc2231getparam","attributePattern","flags","textdecode","decoder","fatal","quotindex","extvalue","encodingend","charset","NetworkManager","getXhr","currXhrId","pendingRequests","requestRange","requestFull","xhr","xhrId","pendingRequest","expectedStatus","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","rangeHeader","hasPendingRequests","getRequestXhr","isPendingRequest","abortAllRequests","abortRequest","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","_getDndContextValue2","getGlobalContext","instanceSymbol","createSingletonDndContext","isGlobalInstance","getDndContextValue","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","internalMonitor","isDraggingSource","isOverTarget","getInitialClientOffset","getInitialSourceClientOffset","getClientOffset","getDifferenceFromInitialOffset","SourceConnector","dragSource","clearDragSource","dragSourceOptions","dragSourceRef","dragSourceNode","reconnectDragSource","clearDragPreview","dragPreviewOptions","dragPreviewRef","dragPreviewNode","reconnectDragPreview","dragSourceOptionsInternal","dragPreviewOptionsInternal","lastConnectedHandlerId","lastConnectedDragSource","lastConnectedDragSourceOptions","lastConnectedDragPreview","lastConnectedDragPreviewOptions","newHandlerId","reconnect","didHandlerIdChange","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","dragSourceUnsubscribe","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","dragPreviewUnsubscribe","useDrag","specRef","_useDragSourceMonitor2","useDragSourceMonitor","connector","_spec$current","beginResult","globalMonitor","_registerSource2","receiveHandlerId","useDragHandler","previewOptions","TargetConnector","dropTarget","clearDropTarget","dropTargetOptions","dropTargetRef","dropTargetNode","dropTargetOptionsInternal","lastConnectedDropTarget","lastConnectedDropTargetOptions","didDropTargetChange","didOptionsChange","disconnectDropTarget","unsubscribeDropTarget","isCallingCanDrop","DropTargetMonitorImpl","useDrop","accept","_useDropTargetMonitor2","useDropTargetMonitor","_registerTarget2","useDropHandler"],"mappings":"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","file":"static/js/2.f416665f.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tvar output = Object( target );\n\n\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tvar source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nvar REVISION = '116';\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nvar TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar VSMShadowMap = 3;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar ACESFilmicToneMapping = 5;\n\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipmapNearestFilter = 1004;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipmapLinearFilter = 1005;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipmapNearestFilter = 1007;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipmapLinearFilter = 1008;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RedIntegerFormat = 1029;\nvar RGFormat = 1030;\nvar RGIntegerFormat = 1031;\nvar RGBIntegerFormat = 1032;\nvar RGBAIntegerFormat = 1033;\n\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGB_ETC2_Format = 37492;\nvar RGBA_ETC2_EAC_Format = 37496;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar RGBA_BPTC_Format = 36492;\nvar SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nvar SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nvar SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nvar SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nvar SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nvar SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nvar SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nvar SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nvar SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nvar SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nvar SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nvar SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nvar SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nvar SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar NormalAnimationBlendMode = 2500;\nvar AdditiveAnimationBlendMode = 2501;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\nvar ZeroStencilOp = 0;\nvar KeepStencilOp = 7680;\nvar ReplaceStencilOp = 7681;\nvar IncrementStencilOp = 7682;\nvar DecrementStencilOp = 7683;\nvar IncrementWrapStencilOp = 34055;\nvar DecrementWrapStencilOp = 34056;\nvar InvertStencilOp = 5386;\n\nvar NeverStencilFunc = 512;\nvar LessStencilFunc = 513;\nvar EqualStencilFunc = 514;\nvar LessEqualStencilFunc = 515;\nvar GreaterStencilFunc = 516;\nvar NotEqualStencilFunc = 517;\nvar GreaterEqualStencilFunc = 518;\nvar AlwaysStencilFunc = 519;\n\nvar StaticDrawUsage = 35044;\nvar DynamicDrawUsage = 35048;\nvar StreamDrawUsage = 35040;\nvar StaticReadUsage = 35045;\nvar DynamicReadUsage = 35049;\nvar StreamReadUsage = 35041;\nvar StaticCopyUsage = 35046;\nvar DynamicCopyUsage = 35050;\nvar StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar 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\tvar 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\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar 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\tvar listeners = this._listeners;\n\t\tvar 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\tvar array = listenerArray.slice( 0 );\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author thezwap\n */\n\nvar _lut = [];\n\nfor ( var i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nvar 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\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\tvar uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c2 = cos( b / 2 );\n\t\tvar s2 = sin( b / 2 );\n\n\t\tvar c13 = cos( ( a + c ) / 2 );\n\t\tvar s13 = sin( ( a + c ) / 2 );\n\n\t\tvar c1_3 = cos( ( a - c ) / 2 );\n\t\tvar s1_3 = sin( ( a - c ) / 2 );\n\n\t\tvar c3_1 = cos( ( c - a ) / 2 );\n\t\tvar s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tvar c = Math.cos( rotation );\n\t\tvar s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tvar c = Math.cos( theta );\n\t\tvar s = Math.sin( theta );\n\n\t\tvar te = this.elements;\n\n\t\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar _canvas;\n\nvar ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tvar canvas;\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t} else if ( 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\tvar context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar 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\tvar 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\tvar 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\tvar 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 ( var i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 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\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar 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\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar 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\t\tx1 = 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\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar 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\tvar 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\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tvar x0 = src0[ srcOffset0 ];\n\t\tvar y0 = src0[ srcOffset0 + 1 ];\n\t\tvar z0 = src0[ srcOffset0 + 2 ];\n\t\tvar w0 = src0[ srcOffset0 + 3 ];\n\n\t\tvar x1 = src1[ srcOffset1 ];\n\t\tvar y1 = src1[ srcOffset1 + 1 ];\n\t\tvar z1 = src1[ srcOffset1 + 2 ];\n\t\tvar w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar 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\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar 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\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 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\ts = 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\ts = 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\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar EPS = 0.000001;\n\n\t\tvar r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tvar angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tvar t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar 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\tvar 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\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar 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\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nvar _vector = new Vector3();\nvar _quaternion = new Quaternion();\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tvar denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tvar scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tvar denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tvar theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tvar sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nvar _v1 = new Vector3();\nvar _m1 = new Matrix4();\nvar _zero = new Vector3( 0, 0, 0 );\nvar _one = new Vector3( 1, 1, 1 );\nvar _x = new Vector3();\nvar _y = new Vector3();\nvar _z = new Vector3();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tvar scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tvar scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tvar scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tvar te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tvar te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar 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\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tvar sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tvar sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tvar 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\tvar invSX = 1 / sx;\n\t\tvar invSY = 1 / sy;\n\t\tvar invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nvar _matrix = new Matrix4();\nvar _quaternion$1 = new Quaternion();\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nvar _object3DId = 0;\n\nvar _v1$1 = new Vector3();\nvar _q1 = new Quaternion();\nvar _m1$1 = new Matrix4();\nvar _target = new Vector3();\n\nvar _position = new Vector3();\nvar _scale = new Vector3();\nvar _quaternion$2 = new Quaternion();\n\nvar _xAxis = new Vector3( 1, 0, 0 );\nvar _yAxis = new Vector3( 0, 1, 0 );\nvar _zAxis = new Vector3( 0, 0, 1 );\n\nvar _addedEvent = { type: 'added' };\nvar _removedEvent = { type: 'removed' };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tvar parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var 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 ( var 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\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar 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\tvar children = this.children;\n\n\t\tfor ( var 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\tvar children = this.children;\n\n\t\tfor ( var 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\tvar 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\tvar children = this.children;\n\n\t\tfor ( var 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\tvar 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\tvar children = this.children;\n\n\t\t\tfor ( var 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\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar 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\tvar parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tvar shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tvar uuids = [];\n\n\t\t\t\tfor ( var 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 ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\t\t\tvar shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nvar _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nvar _vector$1 = new Vector3();\n\nvar _box = new Box3();\n\n// triangle centered vertices\n\nvar _v0 = new Vector3();\nvar _v1$2 = new Vector3();\nvar _v2 = new Vector3();\n\n// triangle edge vectors\n\nvar _f0 = new Vector3();\nvar _f1 = new Vector3();\nvar _f2 = new Vector3();\n\nvar _center = new Vector3();\nvar _extents = new Vector3();\nvar _triangleNormal = new Vector3();\nvar _testAxis = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tvar halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tvar 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\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tvar axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tvar clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tvar i, j;\n\n\tfor ( 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\tvar 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\tvar p0 = v0.dot( _testAxis );\n\t\tvar p1 = v1.dot( _testAxis );\n\t\tvar 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\nvar _box$1 = new Box3();\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tvar 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\tvar maxRadiusSq = 0;\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nvar _vector$2 = new Vector3();\nvar _segCenter = new Vector3();\nvar _segDir = new Vector3();\nvar _diff = new Vector3();\n\nvar _edge1 = new Vector3();\nvar _edge2 = new Vector3();\nvar _normal = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tvar directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tvar a01 = - this.direction.dot( _segDir );\n\t\tvar b0 = _diff.dot( this.direction );\n\t\tvar b1 = - _diff.dot( _segDir );\n\t\tvar c = _diff.lengthSq();\n\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\tvar 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\tvar invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tvar tca = _vector$2.dot( this.direction );\n\t\tvar d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tvar t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tvar t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar 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\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tvar DdN = this.direction.dot( _normal );\n\t\tvar 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\tvar 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\tvar 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\tvar QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nvar _vector1 = new Vector3();\nvar _vector2 = new Vector3();\nvar _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tvar normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tvar direction = line.delta( _vector1 );\n\n\t\tvar 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\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tvar normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tvar referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _v0$1 = new Vector3();\nvar _v1$3 = new Vector3();\nvar _v2$1 = new Vector3();\nvar _v3 = new Vector3();\n\nvar _vab = new Vector3();\nvar _vac = new Vector3();\nvar _vbc = new Vector3();\nvar _vap = new Vector3();\nvar _vbp = new Vector3();\nvar _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tvar targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tvar dot00 = _v0$1.dot( _v0$1 );\n\t\tvar dot01 = _v0$1.dot( _v1$3 );\n\t\tvar dot02 = _v0$1.dot( _v2$1 );\n\t\tvar dot11 = _v1$3.dot( _v1$3 );\n\t\tvar dot12 = _v1$3.dot( _v2$1 );\n\n\t\tvar 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\tvar invDenom = 1 / denom;\n\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tvar a = this.a, b = this.b, c = this.c;\n\t\tvar 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\tvar d1 = _vab.dot( _vap );\n\t\tvar 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\tvar d3 = _vab.dot( _vbp );\n\t\tvar 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\tvar 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\tvar d5 = _vab.dot( _vcp );\n\t\tvar 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\tvar 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\tvar 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\tvar denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _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\nvar _hslA = { h: 0, s: 0, l: 0 };\nvar _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tvar hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar 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\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tvar h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tvar s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tvar l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var 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 ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar 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 () {},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar 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\tvar 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\tvar 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\tvar 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\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar 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\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar 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\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _vector$3 = new Vector3();\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 ( var 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\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tfor ( var 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.applyMatrix3( 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\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( var 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 ( var 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 ( var i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex = undefined;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tvar max = array[ 0 ];\n\n\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nvar _m1$2 = new Matrix4();\nvar _obj = new Object3D();\nvar _offset = new Vector3();\nvar _box$2 = new Box3();\nvar _boxMorphTargets = new Box3();\nvar _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tvar 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\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar 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\tvar tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tvar position = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar position = this.attributes.position;\n\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar 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\tvar position = this.attributes.position;\n\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tvar 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 ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar 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\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var 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 ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tvar morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.setAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\tpC.fromArray( positions, 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\tnormals[ vA ] += cb.x;\n\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vC + 2 ] += cb.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 ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\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\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.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\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeOffset = attribute2.itemSize * offset;\n\t\t\tvar length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( var 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\tvar normals = this.attributes.normal;\n\n\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.x = normals.getX( i );\n\t\t\t_vector$4.y = normals.getY( i );\n\t\t\t_vector$4.z = normals.getZ( 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\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var 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 );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar 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\tvar morphAttributes = this.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar morphArray = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( var i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = morphAttribute[ i ];\n\n\t\t\t\tvar 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\tvar groups = this.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tvar 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\tvar parameters = this.parameters;\n\n\t\t\tfor ( var 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\tvar 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\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar attributeData = attribute.toJSON();\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\tvar morphAttributes = {};\n\t\tvar hasMorphAttributes = false;\n\n\t\tfor ( var key in this.morphAttributes ) {\n\n\t\t\tvar attributeArray = this.morphAttributes[ key ];\n\n\t\t\tvar array = [];\n\n\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = attributeArray[ i ];\n\n\t\t\t\tvar attributeData = attribute.toJSON();\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\tvar 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\tvar 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 var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var 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\tvar name, i, l;\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// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = source.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone() );\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\tvar groups = source.groups;\n\n\t\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tvar 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\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nvar _inverseMatrix = new Matrix4();\nvar _ray = new Ray();\nvar _sphere = new Sphere();\n\nvar _vA = new Vector3();\nvar _vB = new Vector3();\nvar _vC = new Vector3();\n\nvar _tempA = new Vector3();\nvar _tempB = new Vector3();\nvar _tempC = new Vector3();\n\nvar _morphA = new Vector3();\nvar _morphB = new Vector3();\nvar _morphC = new Vector3();\n\nvar _uvA = new Vector2();\nvar _uvB = new Vector2();\nvar _uvC = new Vector2();\n\nvar _intersectionPoint = new Vector3();\nvar _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar 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 ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = 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\tvar 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\tvar geometry = this.geometry;\n\t\tvar material = this.material;\n\t\tvar matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tvar intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar a, b, c;\n\t\t\tvar index = geometry.index;\n\t\t\tvar position = geometry.attributes.position;\n\t\t\tvar morphPosition = geometry.morphAttributes.position;\n\t\t\tvar morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tvar uv = geometry.attributes.uv;\n\t\t\tvar uv2 = geometry.attributes.uv2;\n\t\t\tvar groups = geometry.groups;\n\t\t\tvar drawRange = geometry.drawRange;\n\t\t\tvar i, j, il, jl;\n\t\t\tvar group, groupMaterial;\n\t\t\tvar start, end;\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 ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\t\t\tc = 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\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\tc = 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 ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\ta = j;\n\t\t\t\t\t\t\tb = j + 1;\n\t\t\t\t\t\t\tc = 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\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\tend = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\ta = i;\n\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\tc = 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\tvar fvA, fvB, fvC;\n\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar faces = geometry.faces;\n\t\t\tvar uvs;\n\n\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tvar face = faces[ f ];\n\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tvar 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\tvar 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\tvar 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 ( var i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tvar influence = morphInfluences[ i ];\n\t\t\tvar 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\tvar 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\tvar face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar _geometryId = 0; // Geometry uses even numbers as Id\nvar _m1$3 = new Matrix4();\nvar _obj$1 = new Object3D();\nvar _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( var i = 0; i < positions.length; i += 3 ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromArray( positions, i ) );\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromArray( colors, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexColors = ( colors === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone() ];\n\n\t\t\tvar vertexNormals = ( normals === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromArray( normals, a * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, b * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, c * 3 )\n\t\t\t];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs2, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( var i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( var j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( var k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var 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\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar i, il, j, jl, k, kl;\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargets = source.morphTargets;\n\n\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tvar morphNormals = source.morphNormals;\n\n\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tvar morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tvar skinWeights = source.skinWeights;\n\n\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tvar skinIndices = source.skinIndices;\n\n\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tvar lineDistances = source.lineDistances;\n\n\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar 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\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tvar scope = this;\n\n\t\twidth = width || 1;\n\t\theight = height || 1;\n\t\tdepth = depth || 1;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar numberOfVertices = 0;\n\t\tvar 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\tvar segmentWidth = width / gridX;\n\t\t\tvar segmentHeight = height / gridY;\n\n\t\t\tvar widthHalf = width / 2;\n\t\t\tvar heightHalf = height / 2;\n\t\t\tvar depthHalf = depth / 2;\n\n\t\t\tvar gridX1 = gridX + 1;\n\t\t\tvar gridY1 = gridY + 1;\n\n\t\t\tvar vertexCounter = 0;\n\t\t\tvar groupCount = 0;\n\n\t\t\tvar ix, iy;\n\n\t\t\tvar vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tvar 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 ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar 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\tvar dst = {};\n\n\tfor ( var u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( var p in src[ u ] ) {\n\n\t\t\tvar 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\tvar merged = {};\n\n\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\tvar tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( var 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\nvar UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( var name in this.uniforms ) {\n\n\t\tvar uniform = this.uniforms[ name ];\n\t\tvar 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\tvar extensions = {};\n\n\tfor ( var key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar 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\tvar 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 * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var 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\tvar near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar 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\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, cubeResolution, options ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\toptions = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLCubeRenderTarget( cubeResolution, options );\n\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar 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};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tvar scene = new Scene();\n\n\tvar shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include \",\n\t\t\t\"\t#include \",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#define RECIPROCAL_PI 0.31830988618\",\n\t\t\t\"#define RECIPROCAL_PI2 0.15915494\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV;\",\n\n\t\t\t\"\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\",\n\n\t\t\t\"\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tvar material = new ShaderMaterial( {\n\n\t\ttype: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tvar mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tvar camera = new CubeCamera( 1, 10, 1 );\n\n\tcamera.renderTarget = this;\n\tcamera.renderTarget.texture.name = 'CubeCameraTexture';\n\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nvar _sphere$1 = new Sphere();\nvar _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar 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\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\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\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tvar context = null;\n\tvar isAnimating = false;\n\tvar animationLoop = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tif ( isAnimating === false ) return;\n\n\t\tanimationLoop( time, frame );\n\n\t\tcontext.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\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tvar buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar usage = attribute.usage;\n\n\t\tvar 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\tvar type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar 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\tvar data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar ix, iy;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n return m[ 2 ][ 3 ] == - 1.0;\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x);\\n } else if (face == 1.0) {\\n uv = vec2(direction.x, -direction.z) / abs(direction.y);\\n } else if (face == 2.0) {\\n uv = direction.xy / abs(direction.z);\\n } else if (face == 3.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x);\\n } else if (face == 4.0) {\\n uv = direction.xz / abs(direction.y);\\n } else {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z);\\n }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\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\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\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\\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\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\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\\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\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\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\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\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\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#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#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#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#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#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#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\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\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\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\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\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\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\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;\\nuniform float toneMappingWhitePoint;\\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}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\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 ACESFilmicToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\\n}\";\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;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\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 \\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}\";\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 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 \\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\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSPARENCY\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSPARENCY\\n\\tuniform float transparency;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSPARENCY\\n\\t\\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_vert = \"#include \\n#include \\nvoid main() {\\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\nvar ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar 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.specularmap,\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\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransparency: { value: 0 },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tvar clearColor = new Color( 0x000000 );\n\tvar clearAlpha = 0;\n\n\tvar planeMesh;\n\tvar boxMesh;\n\n\tvar currentBackground = null;\n\tvar currentBackgroundVersion = 0;\n\tvar currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tvar background = scene.background;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tvar xr = renderer.xr;\n\t\tvar session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: '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\tvar texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tvar extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar 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\tvar isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar 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\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tvar maxTextures = gl.getParameter( 34930 );\n\tvar maxVertexTextures = gl.getParameter( 35660 );\n\tvar maxTextureSize = gl.getParameter( 3379 );\n\tvar maxCubemapSize = gl.getParameter( 34076 );\n\n\tvar maxAttributes = gl.getParameter( 34921 );\n\tvar maxVertexUniforms = gl.getParameter( 36347 );\n\tvar maxVaryings = gl.getParameter( 36348 );\n\tvar maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tvar maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = 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\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar 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 ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info ) {\n\n\tvar geometries = new WeakMap();\n\tvar wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tvar attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tvar buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tfor ( var 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\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var 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\tvar indices = [];\n\n\t\tvar geometryIndex = geometry.index;\n\t\tvar geometryPosition = geometry.attributes.position;\n\t\tvar version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tvar array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar 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\tvar array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar 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\tvar attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\tattributes.update( attribute, 34963 );\n\n\t\t//\n\n\t\tvar 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\tvar currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tvar geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tvar extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tvar memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tvar render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tvar influencesList = {};\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tvar 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\tvar length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tvar 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 ( var 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\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t// Remove current morphAttributes\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\tif ( morphTargets ) geometry.deleteAttribute( 'morphTarget' + i );\n\t\t\t\tif ( morphNormals ) geometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar 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\t// Add morphAttributes\n\n\t\tvar morphInfluencesSum = 0;\n\n\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence ) {\n\n\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\tif ( value ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\tif ( morphNormals ) geometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmorphInfluences[ i ] = 0;\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\tvar morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tvar updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\tvar geometry = object.geometry;\n\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tvar texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyTexture2dArray = new DataTexture2DArray();\nvar emptyTexture3d = new DataTexture3D();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array( 16 );\nvar mat3array = new Float32Array( 9 );\nvar mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar 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\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var 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 ( var 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 ( var 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\tvar 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 ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = textures.allocateTextureUnit();\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\tvar 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\tvar 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\tvar 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\tvar 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\tvar cache = this.cache;\n\tvar 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\tvar cache = this.cache;\n\tvar 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\tvar cache = this.cache;\n\tvar 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\tvar cache = this.cache;\n\tvar 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\tvar cache = this.cache;\n\tvar 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\tvar cache = this.cache;\n\tvar 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\tvar cache = this.cache;\n\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tvar 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\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tvar 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\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var 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\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var 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\tvar 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\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar 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\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar 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\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map, 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\tvar n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\tvar 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\tvar 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\tvar 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 ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar 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\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var 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\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tvar status = gl.getShaderParameter( shader, 35713 );\n\tvar 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\tvar 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\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar 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 Uncharted2ToneMapping:\n\t\t\ttoneMappingName = 'Uncharted2';\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\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tvar 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\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar 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\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar 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\nvar 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\tvar 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\nvar deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nvar unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tvar string = '';\n\n\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tvar 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\tvar 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\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tvar 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 ) {\n\n\tvar gl = renderer.getContext();\n\n\tvar defines = parameters.defines;\n\n\tvar vertexShader = parameters.vertexShader;\n\tvar fragmentShader = parameters.fragmentShader;\n\tvar shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tvar envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tvar envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tvar envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tvar customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tvar customDefines = generateDefines( defines );\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding || parameters.lightMapEncoding ) ?\n\t\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.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMapEncoding ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\tvar isGLSL3ShaderMaterial = false;\n\n\t\tvar versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( parameters.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tvar 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\tvar programLog = gl.getProgramInfoLog( program ).trim();\n\t\tvar vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tvar runnable = true;\n\t\tvar haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tvar vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tvar 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\tvar 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\tvar 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\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities ) {\n\n\tvar programs = [];\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\tvar logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tvar floatVertexTextures = capabilities.floatVertexTextures;\n\tvar precision = capabilities.precision;\n\tvar maxVertexUniforms = capabilities.maxVertexUniforms;\n\tvar vertexTextures = capabilities.vertexTextures;\n\n\tvar 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\tvar parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\"\n\t];\n\n\tfunction getShaderObject( material, shaderID ) {\n\n\t\tvar shaderobject;\n\n\t\tif ( shaderID ) {\n\n\t\t\tvar shader = ShaderLib[ shaderID ];\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.type,\n\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.type,\n\t\t\t\tuniforms: material.uniforms,\n\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t};\n\n\t\t}\n\n\t\treturn shaderobject;\n\n\t}\n\n\tfunction allocateBones( object ) {\n\n\t\tvar skeleton = object.skeleton;\n\t\tvar 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\tvar nVertexUniforms = maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar 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\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar fog = scene.fog;\n\t\tvar environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tvar envMap = material.envMap || environment;\n\n\t\tvar 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\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar shaderobject = getShaderObject( material, shaderID );\n\t\tmaterial.onBeforeCompile( shaderobject, renderer );\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: shaderobject.name,\n\n\t\t\tuniforms: shaderobject.uniforms,\n\t\t\tvertexShader: shaderobject.vertexShader,\n\t\t\tfragmentShader: shaderobject.fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tonBeforeCompile: material.onBeforeCompile\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCacheKey = function ( parameters ) {\n\n\t\tvar 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 ( var name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( var 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.onBeforeCompile.toString() );\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( parameters, cacheKey ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar 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 );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function ( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar 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\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tvar map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tvar renderItems = [];\n\tvar renderItemsIndex = 0;\n\n\tvar opaque = [];\n\tvar transparent = [];\n\n\tvar 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\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar 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\tvar 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 ( var i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tvar renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tvar lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar cameras = lists.get( scene );\n\t\tvar list;\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tvar 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\tvar 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\tvar 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\tvar 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\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\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\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\nvar nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tvar cache = new UniformsCache();\n\n\tvar shadowCache = ShadowUniformsCache();\n\n\tvar state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tvar vector3 = new Vector3();\n\tvar matrix4 = new Matrix4();\n\tvar matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tvar r = 0, g = 0, b = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tvar directionalLength = 0;\n\t\tvar pointLength = 0;\n\t\tvar spotLength = 0;\n\t\tvar rectAreaLength = 0;\n\t\tvar hemiLength = 0;\n\n\t\tvar numDirectionalShadows = 0;\n\t\tvar numPointShadows = 0;\n\t\tvar numSpotShadows = 0;\n\n\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tvar color = light.color;\n\t\t\tvar intensity = light.intensity;\n\t\t\tvar distance = light.distance;\n\n\t\t\tvar 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 ( var 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\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tvar shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\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\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tvar shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\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\tvar uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tvar shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\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\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tvar hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tvar lights = new WebGLLights();\n\n\tvar lightsArray = [];\n\tvar shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tvar state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tvar renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tvar _frustum = new Frustum(),\n\n\t\t_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\tvar shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tvar 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\tvar shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tvar 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\tvar fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tvar 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\tvar currentRenderTarget = _renderer.getRenderTarget();\n\t\tvar activeCubeFace = _renderer.getActiveCubeFace();\n\t\tvar activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tvar _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 ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\t\t\tvar 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\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tvar 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\tvar 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\tvar 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\tvar viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( var vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tvar 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}\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\tvar geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tvar index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tvar 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\tvar index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tvar 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\tvar result = null;\n\n\t\tvar getMaterialVariant = getDepthMaterialVariant;\n\t\tvar 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\tvar 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\tvar 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\tvar 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\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar 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\tvar 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\tvar 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\tvar geometry = _objects.update( object );\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tvar 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\tvar 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\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar 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\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar 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\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( 34921 );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar enabledCapabilities = {};\n\n\tvar currentProgram = null;\n\n\tvar currentBlendingEnabled = null;\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar maxTextures = gl.getParameter( 35661 );\n\n\tvar lineWidthAvailable = false;\n\tvar version = 0;\n\tvar glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar 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 ( var 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\tvar 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 initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; 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\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\tvar extension = isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ 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\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ 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 ( isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, normalized, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\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\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tvertexAttribPointer: vertexAttribPointer,\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\tvar maxTextures = capabilities.maxTextures;\n\tvar maxCubemapSize = capabilities.maxCubemapSize;\n\tvar maxTextureSize = capabilities.maxTextureSize;\n\tvar maxSamples = capabilities.maxSamples;\n\n\tvar _videoTextures = new WeakMap();\n\tvar _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\tvar 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\tvar 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\tvar floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tvar width = floor( scale * image.width );\n\t\t\t\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar 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 ( var 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\tvar textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tvar 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\tvar 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\tvar 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\tvar 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\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tvar isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tvar cubeImage = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tvar mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( var j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tvar mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( var j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tvar mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( var j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tvar wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tvar 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\tvar 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\tvar 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\tvar needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tvar image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tvar supportsMips = 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( textureType, texture, supportsMips );\n\n\t\tvar mipmap, 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 ( var 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 ( var 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 ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\tvar 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\tvar glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar 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\tvar 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\tvar 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\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\tvar glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar 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\tvar 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\tvar 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\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar 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 ( var 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\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar 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\tvar isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tvar isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tvar 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 ( var 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\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tvar glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tvar 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 ( var 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\tvar texture = renderTarget.texture;\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tvar target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tvar 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\tvar 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\tvar width = renderTarget.width;\n\t\t\t\tvar height = renderTarget.height;\n\t\t\t\tvar 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\tvar 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\tvar warnedTexture2D = false;\n\tvar warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tvar inputPose = null;\n\t\tvar gripPose = null;\n\n\t\tvar targetRay = this._targetRay;\n\t\tvar grip = this._grip;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer, gl ) {\n\n\tvar scope = this;\n\n\tvar session = null;\n\n\tvar framebufferScaleFactor = 1.0;\n\n\tvar referenceSpace = null;\n\tvar referenceSpaceType = 'local-floor';\n\n\tvar pose = null;\n\n\tvar controllers = [];\n\tvar inputSourcesMap = new Map();\n\n\t//\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tvar cameras = [ cameraL, cameraR ];\n\n\tvar cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tvar _currentDepthNear = null;\n\tvar _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tvar 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\tvar controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tvar controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tvar attributes = gl.getContextAttributes();\n\n\t\t\tvar 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\tvar baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tvar inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( var 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 ( var i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tvar inputSource = event.removed[ i ];\n\t\t\tvar 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 ( var i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tvar inputSource = event.added[ i ];\n\t\t\tvar 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\tvar cameraLPos = new Vector3();\n\tvar cameraRPos = new Vector3();\n\n\t/**\n\t * @author jsantell / https://www.jsantell.com/\n\t *\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tvar ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tvar projL = cameraL.projectionMatrix.elements;\n\t\tvar 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\tvar near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tvar far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tvar topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tvar bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tvar leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tvar rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tvar left = near * leftFov;\n\t\tvar 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\tvar zOffset = ipd / ( - leftFov + rightFov );\n\t\tvar xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tvar near2 = near + zOffset;\n\t\tvar far2 = far + zOffset;\n\t\tvar left2 = left - xOffset;\n\t\tvar right2 = right + ( ipd - xOffset );\n\t\tvar top2 = topFov * far / far2 * near2;\n\t\tvar bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tvar parent = camera.parent;\n\t\tvar cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tvar children = camera.children;\n\n\t\tfor ( var 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\tvar 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\tvar views = pose.views;\n\t\t\tvar baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tvar 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 ( var i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tvar view = views[ i ];\n\t\t\t\tvar viewport = baseLayer.getViewport( view );\n\n\t\t\t\tvar 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\tvar inputSources = session.inputSources;\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\t\t\tvar 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\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tvar currentRenderList = null;\n\tvar currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t\t_isContextLost = false,\n\n\t\t// internal state cache\n\n\t\t_framebuffer = null,\n\n\t\t_currentActiveCubeFace = 0,\n\t\t_currentActiveMipmapLevel = 0,\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\n\t\t// geometry and program caching\n\n\t\t_currentGeometryProgram = {\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false\n\t\t},\n\n\t\t_currentCamera = null,\n\t\t_currentArrayCamera = null,\n\n\t\t_currentViewport = new Vector4(),\n\t\t_currentScissor = new Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t//\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\t\t_opaqueSort = null,\n\t\t_transparentSort = null,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t// frustum\n\n\t\t_frustum = new Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_vector3 = new Vector3();\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar 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\txrCompatible: true\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\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\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\tvar extensions, capabilities, state, info;\n\tvar properties, textures, attributes, geometries, objects;\n\tvar programCache, renderLists, renderStates;\n\n\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tvar utils;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tvar xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tvar 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\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\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\tvar 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\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar 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\tvar 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\tstate.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\tstate.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\tstate.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\tstate.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tvar tempScene = new Scene();\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = tempScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tvar program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\tvar updateBuffers = false;\n\n\t\tif ( _currentGeometryProgram.geometry !== geometry.id ||\n\t\t\t_currentGeometryProgram.program !== program.id ||\n\t\t\t_currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) {\n\n\t\t\t_currentGeometryProgram.geometry = geometry.id;\n\t\t\t_currentGeometryProgram.program = program.id;\n\t\t\t_currentGeometryProgram.wireframe = material.wireframe === true;\n\t\t\tupdateBuffers = true;\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\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar 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\tvar 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\tvar attribute;\n\t\tvar 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\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, geometry, material, program );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( 34963, attribute.buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar 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\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, geometry.maxInstancedCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( object, geometry, material, program ) {\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\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\tvar 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\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = 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\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tstate.vertexAttribPointer( 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\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = 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\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tstate.vertexAttribPointer( 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\tvar 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\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar 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\t_gl.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\t_gl.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\t_gl.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\t_gl.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\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tvar compiled = {};\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.material ) {\n\n\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\tif ( object.material[ i ].uuid in compiled === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( object.material[ i ], scene, object );\n\t\t\t\t\t\t\tcompiled[ object.material[ i ].uuid ] = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.material.uuid in compiled === false ) {\n\n\t\t\t\t\tinitMaterial( object.material, scene, object );\n\t\t\t\t\tcompiled[ object.material.uuid ] = true;\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\tvar 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\tvar 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\tanimation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tvar 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 && camera.isCamera ) ) {\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 ) return;\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram.geometry = null;\n\t\t_currentGeometryProgram.program = null;\n\t\t_currentGeometryProgram.wireframe = false;\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 && xr.isPresenting ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tscene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset ) 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\tvar opaqueObjects = currentRenderList.opaque;\n\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tscene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar 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\tvar geometry = objects.update( object );\n\t\t\t\t\tvar 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\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\tvar 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\tvar children = object.children;\n\n\t\tfor ( var 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, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tvar program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\t_currentGeometryProgram.geometry = null;\n\t\t\t_currentGeometryProgram.program = null;\n\t\t\t_currentGeometryProgram.wireframe = false;\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar lights = currentRenderState.state.lights;\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tvar lightsStateVersion = lights.state.version;\n\n\t\tvar parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tvar programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\ttextures.resetTextureUnits();\n\n\t\tvar fog = scene.fog;\n\t\tvar environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tvar encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tvar materialProperties = properties.get( material );\n\t\tvar lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar 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\tvar 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.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\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tvar 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\tvar 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\tvar 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\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\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\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material, environment );\n\n\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material, environment );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material, environment );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsMatcap( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\t\trefreshUniformsSprites( m_uniforms, material );\n\n\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\tm_uniforms.color.value.copy( material.color );\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t\t}\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// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tvar envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tvar 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 ) {\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\tvar 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\tvar 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 refreshUniformsFog( 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 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\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.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transparency.value = material.transparency;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar framebuffer = _framebuffer;\n\t\tvar isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar 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\tvar 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\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tvar levelScale = Math.pow( 2, - level );\n\t\tvar width = Math.floor( texture.image.width * levelScale );\n\t\tvar height = Math.floor( texture.image.height * levelScale );\n\t\tvar glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tvar width = srcTexture.image.width;\n\t\tvar height = srcTexture.image.height;\n\t\tvar glFormat = utils.convert( dstTexture.format );\n\t\tvar glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\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 ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( 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} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nvar _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( var 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} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar _geometry;\n\nvar _intersectPoint = new Vector3();\nvar _worldScale = new Vector3();\nvar _mvPosition = new Vector3();\n\nvar _alignedPosition = new Vector2();\nvar _rotatedPosition = new Vector2();\nvar _viewWorldMatrix = new Matrix4();\n\nvar _vA$1 = new Vector3();\nvar _vB$1 = new Vector3();\nvar _vC$1 = new Vector3();\n\nvar _uvA$1 = new Vector2();\nvar _uvB$1 = new Vector2();\nvar _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\tvar 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\tvar 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\tvar rotation = this.material.rotation;\n\t\tvar sin, cos;\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\tvar 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\tvar 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\tvar 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\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\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\treturn this;\n\n\t}\n\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _v1$4 = new Vector3();\nvar _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\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var 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\tvar levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tfor ( var 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\tvar levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar 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\tvar 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\tvar distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tfor ( var 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\tvar 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\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tvar vector = new Vector4();\n\n\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( var 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\tvar scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tvar basePosition = new Vector3();\n\n\t\tvar skinIndex = new Vector4();\n\t\tvar skinWeight = new Vector4();\n\n\t\tvar vector = new Vector3();\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tvar skeleton = this.skeleton;\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( var i = 0; i < 4; i ++ ) {\n\n\t\t\t\tvar weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tvar boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nvar _offsetMatrix = new Matrix4();\nvar _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone, i, il;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tvar bones = this.bones;\n\t\tvar boneInverses = this.boneInverses;\n\t\tvar boneMatrices = this.boneMatrices;\n\t\tvar boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( var 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\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _instanceLocalMatrix = new Matrix4();\nvar _instanceWorldMatrix = new Matrix4();\n\nvar _instanceIntersects = [];\n\nvar _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\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\tvar matrixWorld = this.matrixWorld;\n\t\tvar 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 ( var 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 ( var i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tvar intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.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\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _start = new Vector3();\nvar _end = new Vector3();\nvar _inverseMatrix$1 = new Matrix4();\nvar _ray$1 = new Ray();\nvar _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tvar 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\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\tvar lineDistances = [ 0 ];\n\n\t\t\t\tfor ( var 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\tvar vertices = geometry.vertices;\n\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( var i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tvar geometry = this.geometry;\n\t\tvar matrixWorld = this.matrixWorld;\n\t\tvar threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tvar localThresholdSq = localThreshold * localThreshold;\n\n\t\tvar vStart = new Vector3();\n\t\tvar vEnd = new Vector3();\n\t\tvar interSegment = new Vector3();\n\t\tvar interRay = new Vector3();\n\t\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar attributes = geometry.attributes;\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tvar 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\tvar 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 ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tvar 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\tvar 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\tvar vertices = geometry.vertices;\n\t\t\tvar nbVertices = vertices.length;\n\n\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tvar distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _start$1 = new Vector3();\nvar _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\tvar 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\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\tvar lineDistances = [];\n\n\t\t\t\tfor ( var 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\tvar vertices = geometry.vertices;\n\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( var i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar _inverseMatrix$2 = new Matrix4();\nvar _ray$2 = new Ray();\nvar _sphere$3 = new Sphere();\nvar _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tvar geometry = this.geometry;\n\t\tvar matrixWorld = this.matrixWorld;\n\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tvar localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar attributes = geometry.attributes;\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar vertices = geometry.vertices;\n\n\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar 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 ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = 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\tvar 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\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tvar rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tvar intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tvar video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar i, j, l, o, ol;\n\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\tvar vertex;\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\te = edges[ key ];\n\n\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tvar position, indices, groups;\n\t\tvar group, start, count;\n\t\tvar index1, index2;\n\n\t\tvertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\t\t\tindices = geometry.index;\n\t\t\tgroups = 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 ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\tstart = group.start;\n\t\t\t\tcount = group.count;\n\n\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\tedge2 = 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\tkey = 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 ( key in edges ) {\n\n\t\t\t\te = 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\tposition = geometry.attributes.position;\n\n\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( 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\tindex1 = 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\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\tvar EPS = 0.00001;\n\n\tvar normal = new Vector3();\n\n\tvar p0 = new Vector3(), p1 = new Vector3();\n\tvar pu = new Vector3(), pv = new Vector3();\n\n\tvar i, j;\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\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tvar v = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tvar 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 ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\tvar a = i * sliceCount + j;\n\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\tvar P = new Vector3();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, j;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nvar Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tvar hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tvar 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 ( var 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tvar 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\tvar p = start;\n\tdo {\n\n\t\tvar 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\tvar a = start;\n\tdo {\n\n\t\tvar 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\tvar 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\tvar queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tvar 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\tvar p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tvar 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\tvar stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tvar 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\tvar 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\tvar 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\tvar o1 = sign( area( p1, q1, p2 ) );\n\tvar o2 = sign( area( p1, q1, q2 ) );\n\tvar o3 = sign( area( p2, q2, p1 ) );\n\tvar 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\tvar 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\tvar p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tvar 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\tvar 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\tvar sum = 0;\n\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var 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\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tvar holeIndices = []; // array of hole indices\n\t\tvar 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\tvar holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( var 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\tvar triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( var 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\tvar 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 ( var i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tvar scope = this;\n\n\tvar verticesArray = [];\n\tvar uvArray = [];\n\n\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tvar shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar placeholder = [];\n\n\t\t// options\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\t\tvar depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tvar bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar extrudePath = options.extrudePath;\n\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tvar extrudePts, extrudeByPath = false;\n\t\tvar splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [],\n\t\t\toneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0,\n\t\t\t\t\tsl = steps + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nvar WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar 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\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\tvar d_x = vertices[ indexD * 3 ];\n\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tvar ix, iy;\n\n\tvar index = 0;\n\tvar grid = [];\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tvar uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tvar u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\tvar d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// some helper variables\n\n\tvar segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tbase = segments * points.length * 3;\n\n\t\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tvar geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar sourceVertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tvar e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar index = 0;\n\tvar indexArray = [];\n\tvar halfHeight = height / 2;\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tvar a = indexArray[ y ][ x ];\n\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, s;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transparency: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transparency = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transparency = source.transparency;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\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 * specularMap: new THREE.Texture( ),\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\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\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.specularMap = null;\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\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\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.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar 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\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var 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\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var 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\tvar 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\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tvar clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tvar track = clip.tracks[ i ];\n\t\t\tvar valueSize = track.getValueSize();\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\tfor ( var j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tvar 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 ( var 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\tvar minStartTime = Infinity;\n\n\t\tfor ( var 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 ( var i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tvar numTracks = targetClip.tracks.length;\n\t\tvar referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( var i = 0; i < numTracks; ++ i ) {\n\n\t\t\tvar referenceTrack = referenceClip.tracks[ i ];\n\t\t\tvar 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\tvar targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tvar valueSize = referenceTrack.getValueSize();\n\t\t\tvar lastIndex = referenceTrack.times.length - 1;\n\t\t\tvar referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tvar startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tvar interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tvar referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tvar numTimes = targetTrack.times.length;\n\t\t\tfor ( var j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tvar valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( var k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar 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 ( var 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\tvar 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 ( var 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\tvar 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\tvar 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 ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar 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\tvar 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\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar 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 ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar 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\tvar 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\tvar 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\tvar 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\tvar times = this.times;\n\n\t\t\tfor ( var 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\tvar times = this.times;\n\n\t\t\tfor ( var 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\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 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\tvar 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\tvar valid = true;\n\n\t\tvar 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\tvar 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\tvar prevTime = null;\n\n\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar 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 ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar 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\tvar 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\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar 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 ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar 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\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var 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 ( var 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\tvar times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tvar values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tvar TypedKeyframeTrack = this.constructor;\n\t\tvar track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tvar trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tvar 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\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar 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 ( var 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\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar 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\tvar 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\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var 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\tvar 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\tvar 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 ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\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\tvar clips = [];\n\n\t\tfor ( var 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\tvar 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\tvar times = [];\n\t\t\t\tvar 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\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || - 1;\n\t\tvar fps = animation.fps || 30;\n\t\tvar blendMode = animation.blendMode;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar 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\tvar morphTargetNames = {};\n\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var 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 ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar 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\tvar 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\tvar 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\tvar tracks = this.tracks, duration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar 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 ( var 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\tvar valid = true;\n\n\t\tfor ( var 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 ( var 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\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false;\n\tvar itemsLoaded = 0;\n\tvar itemsTotal = 0;\n\tvar urlModifier = undefined;\n\tvar 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\tvar 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 ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar 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\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tvar scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar 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\tvar scope = this;\n\n\t\tvar 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\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\tvar data = dataUriRegexResult[ 3 ];\n\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\tvar response;\n\t\t\t\tvar 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\tvar view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( var 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\tvar 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\tvar request = 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\tvar response = this.response;\n\n\t\t\t\tvar 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 ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar 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 ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar 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\tvar callbacks = loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar 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\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar 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\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar 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 ( var header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( value ) {\n\n\t\tthis.requestHeader = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var 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\tvar texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar 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\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar 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 ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar 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\tvar isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var 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\tvar 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\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( 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\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar 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\tvar 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\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar 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\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar 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\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar 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\tvar 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\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = 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\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar 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 ( 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\ttheta = 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\ttheta = 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 ( 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\tvar 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\tvar point = optionalTarget || new Vector2();\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar 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\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tvar 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\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tvar 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\tvar t2 = t * t;\n\t\t\tvar 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\nvar tmp = new Vector3();\nvar px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar points = this.points;\n\tvar l = points.length;\n\n\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tvar intPoint = Math.floor( p );\n\tvar 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\tvar p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tvar 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 ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar 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 ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tvar v0 = ( p2 - p0 ) * 0.5;\n\tvar v1 = ( p3 - p1 ) * 0.5;\n\tvar t2 = t * t;\n\tvar 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\tvar 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\tvar k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tvar k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tvar tangent = optionalTarget || new Vector2();\n\n\tvar tangent = tangent.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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar points = this.points;\n\tvar p = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar p1 = points[ intPoint ];\n\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar 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 ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar 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 ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar 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\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar 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\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar 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 ( var i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tvar data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tvar 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 ( var i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( var 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\tvar 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\tvar 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\tvar 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\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar 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\tvar x0 = this.currentPoint.x;\n\t\tvar 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\tvar x0 = this.currentPoint.x;\n\t\tvar 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\tvar 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\tvar 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\tvar 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\tvar data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var 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 ( var i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tvar 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\tvar data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tvar 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 ( var i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.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._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\tvar 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\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tvar camera = this.camera;\n\n\t\tvar fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tvar camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar 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\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( var name in json.uniforms ) {\n\n\t\t\t\tvar uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( var 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\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar 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\tvar s = '';\n\n\t\tfor ( var 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\tvar index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\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.maxInstancedCount = source.maxInstancedCount;\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\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.maxInstancedCount = this.maxInstancedCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tvar data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\tvar bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\tvar bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\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\tvar morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( var key in morphAttributes ) {\n\n\t\t\t\tvar attributeArray = morphAttributes[ key ];\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar attribute = attributeArray[ i ];\n\t\t\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\t\t\tvar bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\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\tvar morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar 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\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar 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\nvar TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar 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\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar shapes = this.parseShape( json.shapes );\n\t\tvar geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tvar shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar 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\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar 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\tvar extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar cache = {}; // MultiMaterial\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar 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\tvar array = [];\n\n\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tvar material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar data = json[ i ];\n\n\t\t\tvar clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar 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 ( var j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar currentUrl = url[ j ];\n\n\t\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar 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\tvar texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tvar 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\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar 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\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = 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\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\t\t\t\tvar count = data.count;\n\t\t\t\tvar instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.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\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tvar levels = data.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tvar level = levels[ l ];\n\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nvar TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nvar TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nvar TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = undefined;\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\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\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\tif ( scope.options === undefined ) {\n\n\t\t\t\t// Workaround for FireFox. It causes an error if you pass options.\n\t\t\t\treturn createImageBitmap( blob );\n\n\t\t\t} else {\n\n\t\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t\t}\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar 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\tvar 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\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar 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\tvar 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\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var 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\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var 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 ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var 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\tvar tmpHoles;\n\n\t\tfor ( var 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 ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tvar shapes = [];\n\t\tvar paths = createPaths( text, size, this.data );\n\n\t\tfor ( var 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\tvar chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tvar scale = size / data.resolution;\n\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tvar paths = [];\n\n\tvar offsetX = 0, offsetY = 0;\n\n\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\tvar 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\tvar 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\tvar 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\tvar path = new ShapePath();\n\n\tvar x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\tvar action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar 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\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _context;\n\nvar AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\tvar context = AudioContext.getContext();\n\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( skyColor );\n\tvar color2 = new Color().set( groundColor );\n\n\tvar sky = new Vector3( color1.r, color1.g, color1.b );\n\tvar 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\tvar c0 = Math.sqrt( Math.PI );\n\tvar 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\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar 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\tvar 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\nvar _eyeRight = new Matrix4();\nvar _eyeLeft = new Matrix4();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tvar cache = this._cache;\n\n\t\tvar 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\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tvar eyeSepHalf = cache.eyeSep / 2;\n\t\t\tvar eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tvar ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tvar xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar 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\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _position$2 = new Vector3();\nvar _quaternion$3 = new Quaternion();\nvar _scale$1 = new Vector3();\nvar _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tvar listener = this.context.listener;\n\t\tvar 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\tvar endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tvar source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _position$3 = new Vector3();\nvar _quaternion$4 = new Quaternion();\nvar _scale$2 = new Vector3();\nvar _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tvar 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\tvar endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar 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\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var 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\tvar 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\tvar 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\tvar 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\tvar 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 ( var 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\tvar binding = this.binding;\n\n\t\tvar 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 ( var 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\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tvar startIndex = this._addIndex * this.valueSize;\n\n\t\tthis.buffer.fill( 0, startIndex, startIndex + this.valueSize );\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tvar startIndex = this._origIndex * this.valueSize;\n\t\tvar targetIndex = this._addIndex * this.valueSize;\n\n\t\tthis.buffer.copyWithin( targetIndex, startIndex, this.valueSize );\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 ( var 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\tvar 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\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar 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 ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nvar _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.\nvar _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nvar _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.\nvar _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nvar _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.\nvar _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nvar _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nvar _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nvar _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tvar 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\tvar 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\tvar bindings = this._bindings;\n\n\t\tfor ( var 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\tvar bindings = this._bindings;\n\n\t\tfor ( var 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\tvar bindings = this._bindings;\n\n\t\tfor ( var 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\tvar 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\tvar 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\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against a whitelist. 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\tvar 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\tvar searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tvar 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\tvar 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\tvar 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\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var 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\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var 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\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var 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\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var 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\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar 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 ( var 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\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar 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\tvar 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\tvar 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\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = 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\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = 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}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( var 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\tvar 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\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\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\t\t\tknownObject = undefined;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar 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\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 ( var 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\tvar 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 ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = 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\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar 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\tvar 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 ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar 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\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar 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\tvar 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 ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar 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\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar 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\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar 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 ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar 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\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\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\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar 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\tvar 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\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( var 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 ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\t\tvar duration = this._clip.duration;\n\t\tvar loop = this.loop;\n\t\tvar loopCount = this._loopCount;\n\n\t\tvar 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\tvar 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\tvar 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\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = 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\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tvar 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\t\t\tbindingsByName = 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 ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = 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\tvar 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\tvar 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\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar 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\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar 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\tvar 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\tvar 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\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = 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\tvar 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\tvar 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\tvar 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\tvar 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\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar 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\tvar 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\tvar 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\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\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\tvar 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\tvar 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\tvar 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\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = 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\tvar 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\tvar 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 !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.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\tvar 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\tvar 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\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\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\tvar 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 ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar 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\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var 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 ( var 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\tvar 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\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar 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\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar 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\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar 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\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar 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\tvar 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 ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nvar _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tvar halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tvar clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nvar _startP = new Vector3();\nvar _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tvar startEnd2 = _startEnd.dot( _startEnd );\n\t\tvar startEnd_startP = _startEnd.dot( _startP );\n\n\t\tvar t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nvar _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nvar _vector$9 = new Vector3();\nvar _boneMatrix = new Matrix4();\nvar _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tvar boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tvar bones = getBoneList( object );\n\n\tvar geometry = new BufferGeometry();\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar color1 = new Color( 0, 0, 1 );\n\tvar color2 = new Color( 0, 1, 0 );\n\n\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar bones = this.bones;\n\n\tvar geometry = this.geometry;\n\tvar position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tvar 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\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nvar _vector$a = new Vector3();\nvar _color1 = new Color();\nvar _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tvar position = geometry.getAttribute( 'position' );\n\tvar colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tvar color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = size / divisions;\n\tvar halfSize = size / 2;\n\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar x, z;\n\tvar v, i, j, r, color;\n\n\t// create the radials\n\n\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tx = Math.sin( v ) * radius;\n\t\tz = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( i = 0; i <= circles; i ++ ) {\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tr = radius - ( radius / circles * i );\n\n\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tv = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nvar _v1$5 = new Vector3();\nvar _v2$3 = new Vector3();\nvar _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nvar _vector$b = new Vector3();\nvar _camera = new Camera();\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new BufferGeometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar colorFrustum = new Color( 0xffaa00 );\n\tvar colorCone = new Color( 0xff0000 );\n\tvar colorUp = new Color( 0x00aaff );\n\tvar colorTarget = new Color( 0xffffff );\n\tvar colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry = this.geometry;\n\tvar pointMap = this.pointMap;\n\n\tvar w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tvar points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nvar _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar 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\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tvar min = _box$3.min;\n\tvar max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tvar position = this.geometry.attributes.position;\n\tvar array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tvar 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\tvar 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\tvar geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar 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\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nvar _axis = new Vector3();\nvar _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tvar radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tvar colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author Emmett Lalish / elalish\n *\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nvar LOD_MIN = 4;\nvar LOD_MAX = 8;\nvar 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.\nvar EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nvar 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.\nvar MAX_SAMPLES = 20;\n\nvar 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\nvar _flatCamera = new OrthographicCamera();\nvar { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nvar _oldTarget = null;\n\n// Golden Ratio\nvar PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nvar 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.\nvar _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tvar cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\tequirectangular.magFilter = NearestFilter;\n\t\tequirectangular.minFilter = NearestFilter;\n\t\tequirectangular.generateMipmaps = false;\n\n\t\treturn this.fromCubemap( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tvar cubeUVRenderTarget = this._allocateTargets( cubemap );\n\t\tthis._textureToCubeUV( cubemap, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( var i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t// reset viewport and scissor\n\t\toutputTarget.setSize( outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_allocateTargets: function ( equirectangular ) {\n\n\t\tvar 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( equirectangular ) ? equirectangular.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tvar cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = equirectangular ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tvar tmpScene = new Scene();\n\t\ttmpScene.add( new Mesh( _lodPlanes[ 0 ], material ) );\n\t\tthis._renderer.compile( tmpScene, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tvar fov = 90;\n\t\tvar aspect = 1;\n\t\tvar cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tvar upSign = [ 1, 1, 1, 1, - 1, 1 ];\n\t\tvar forwardSign = [ 1, 1, - 1, - 1, - 1, 1 ];\n\t\tvar renderer = this._renderer;\n\n\t\tvar outputEncoding = renderer.outputEncoding;\n\t\tvar toneMapping = renderer.toneMapping;\n\t\tvar toneMappingExposure = renderer.toneMappingExposure;\n\t\tvar clearColor = renderer.getClearColor();\n\t\tvar clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = LinearToneMapping;\n\t\trenderer.toneMappingExposure = 1.0;\n\t\trenderer.outputEncoding = LinearEncoding;\n\t\tscene.scale.z *= - 1;\n\n\t\tvar background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tvar maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tvar fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tvar alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.toneMappingExposure = toneMappingExposure;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\t\tscene.scale.z *= - 1;\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tvar scene = new Scene();\n\t\tvar 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\tvar material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tscene.add( new Mesh( _lodPlanes[ 0 ], material ) );\n\n\t\tvar 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( scene, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tvar renderer = this._renderer;\n\t\tvar autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( var i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tvar sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tvar poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tvar pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tvar renderer = this._renderer;\n\t\tvar 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\tvar STANDARD_DEVIATIONS = 3;\n\n\t\tvar blurScene = new Scene();\n\t\tblurScene.add( new Mesh( _lodPlanes[ lodOut ], blurMaterial ) );\n\t\tvar blurUniforms = blurMaterial.uniforms;\n\n\t\tvar pixels = _sizeLods[ lodIn ] - 1;\n\t\tvar radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tvar sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tvar 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\tvar weights = [];\n\t\tvar sum = 0;\n\n\t\tfor ( var i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tvar x = i / sigmaPixels;\n\t\t\tvar 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 ( var 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\tvar outputSize = _sizeLods[ lodOut ];\n\t\tvar x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tvar 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( blurScene, _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\tvar _lodPlanes = [];\n\tvar _sizeLods = [];\n\tvar _sigmas = [];\n\n\tvar lod = LOD_MAX;\n\n\tfor ( var i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tvar sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tvar 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\tvar texelSize = 1.0 / ( sizeLod - 1 );\n\t\tvar min = - texelSize / 2;\n\t\tvar max = 1 + texelSize / 2;\n\t\tvar uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tvar cubeFaces = 6;\n\t\tvar vertices = 6;\n\t\tvar positionSize = 3;\n\t\tvar uvSize = 2;\n\t\tvar faceIndexSize = 1;\n\n\t\tvar position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tvar uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tvar faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( var face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tvar x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tvar y = face > 2 ? 0 : - 1;\n\t\t\tvar 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\tvar fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tvar 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\tvar 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\tvar weights = new Float32Array( maxSamples );\n\tvar poleAxis = new Vector3( 0, 1, 0 );\n\tvar shaderMaterial = new RawShaderMaterial( {\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n${_getEncodings()}\n\n#define ENVMAP_TYPE_CUBE_UV\n#include \n\nvec3 getSample(float theta, vec3 axis) {\n\tfloat cosTheta = cos(theta);\n\t// Rodrigues' axis-angle rotation\n\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\treturn bilinearCubeUV(envMap, sampleDirection, mipInt);\n}\n\nvoid main() {\n\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\tif (all(equal(axis, vec3(0.0))))\n\t\taxis = vec3(vOutputDirection.z, 0.0, - vOutputDirection.x);\n\taxis = normalize(axis);\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb += weights[0] * getSample(0.0, axis);\n\tfor (int i = 1; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfloat theta = dTheta * float(i);\n\t\tgl_FragColor.rgb += weights[i] * getSample(-1.0 * theta, axis);\n\t\tgl_FragColor.rgb += weights[i] * getSample(theta, axis);\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\tshaderMaterial.type = 'SphericalGaussianBlur';\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tvar texelSize = new Vector2( 1, 1 );\n\tvar shaderMaterial = new RawShaderMaterial( {\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n${_getEncodings()}\n\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv;\n\tuv.y = asin(clamp(outputDirection.y, -1.0, 1.0)) * RECIPROCAL_PI + 0.5;\n\tuv.x = atan(outputDirection.z, outputDirection.x) * RECIPROCAL_PI2 + 0.5;\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\tshaderMaterial.type = 'EquirectangularToCubeUV';\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tvar shaderMaterial = new RawShaderMaterial( {\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n${_getEncodings()}\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\tshaderMaterial.type = 'CubemapToCubeUV';\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn `\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn `\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t`;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nvar LineStrip = 0;\nvar LinePieces = 1;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t}\n\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\tvar scope = this;\n\t\t\tvar audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nvar 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\tvar 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\tvar loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar 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\tvar loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar 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\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SphericalReflectionMapping, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uncharted2ToneMapping, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","export function shallowEqual(\n objA: T,\n objB: T,\n compare?: (a: T, b: T, key?: string) => boolean | void,\n compareContext?: any\n) {\n var compareResult = compare\n ? compare.call(compareContext, objA, objB)\n : void 0;\n if (compareResult !== void 0) {\n return !!compareResult;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = (objA as any)[key];\n var valueB = (objB as any)[key];\n\n compareResult = compare\n ? compare.call(compareContext, valueA, valueB, key)\n : void 0;\n\n if (\n compareResult === false ||\n (compareResult === void 0 && valueA !== valueB)\n ) {\n return false;\n }\n }\n\n return true;\n}\n","import React from 'react';\nimport createReactContext from 'create-react-context';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar StateContext = createReactContext(null);\n\nvar Container = function () {\n function Container() {\n var _this = this;\n\n _classCallCheck(this, Container);\n\n this._listeners = [];\n\n CONTAINER_DEBUG_CALLBACKS.forEach(function (cb) {\n return cb(_this);\n });\n }\n\n Container.prototype.setState = function setState(updater, callback) {\n var _this2 = this;\n\n return Promise.resolve().then(function () {\n var nextState = void 0;\n\n if (typeof updater === 'function') {\n nextState = updater(_this2.state);\n } else {\n nextState = updater;\n }\n\n if (nextState == null) {\n if (callback) callback();\n return;\n }\n\n _this2.state = Object.assign({}, _this2.state, nextState);\n\n var promises = _this2._listeners.map(function (listener) {\n return listener();\n });\n\n return Promise.all(promises).then(function () {\n if (callback) {\n return callback();\n }\n });\n });\n };\n\n Container.prototype.subscribe = function subscribe(fn) {\n this._listeners.push(fn);\n };\n\n Container.prototype.unsubscribe = function unsubscribe(fn) {\n this._listeners = this._listeners.filter(function (f) {\n return f !== fn;\n });\n };\n\n return Container;\n}();\n\nvar DUMMY_STATE = {};\n\nvar Subscribe = function (_React$Component) {\n _inherits(Subscribe, _React$Component);\n\n function Subscribe() {\n var _temp, _this3, _ret;\n\n _classCallCheck(this, Subscribe);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this3 = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this3), _this3.state = {}, _this3.instances = [], _this3.unmounted = false, _this3.onUpdate = function () {\n return new Promise(function (resolve) {\n if (!_this3.unmounted) {\n _this3.setState(DUMMY_STATE, resolve);\n } else {\n resolve();\n }\n });\n }, _temp), _possibleConstructorReturn(_this3, _ret);\n }\n\n Subscribe.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounted = true;\n this._unsubscribe();\n };\n\n Subscribe.prototype._unsubscribe = function _unsubscribe() {\n var _this4 = this;\n\n this.instances.forEach(function (container) {\n container.unsubscribe(_this4.onUpdate);\n });\n };\n\n Subscribe.prototype._createInstances = function _createInstances(map, containers) {\n var _this5 = this;\n\n this._unsubscribe();\n\n if (map === null) {\n throw new Error('You must wrap your components with a ');\n }\n\n var safeMap = map;\n var instances = containers.map(function (ContainerItem) {\n var instance = void 0;\n\n if ((typeof ContainerItem === 'undefined' ? 'undefined' : _typeof(ContainerItem)) === 'object' && ContainerItem instanceof Container) {\n instance = ContainerItem;\n } else {\n instance = safeMap.get(ContainerItem);\n\n if (!instance) {\n instance = new ContainerItem();\n safeMap.set(ContainerItem, instance);\n }\n }\n\n instance.unsubscribe(_this5.onUpdate);\n instance.subscribe(_this5.onUpdate);\n\n return instance;\n });\n\n this.instances = instances;\n return instances;\n };\n\n Subscribe.prototype.render = function render() {\n var _this6 = this;\n\n return React.createElement(\n StateContext.Consumer,\n null,\n function (map) {\n return _this6.props.children.apply(null, _this6._createInstances(map, _this6.props.to));\n }\n );\n };\n\n return Subscribe;\n}(React.Component);\n\nfunction Provider(props) {\n return React.createElement(\n StateContext.Consumer,\n null,\n function (parentMap) {\n var childMap = new Map(parentMap);\n\n if (props.inject) {\n props.inject.forEach(function (instance) {\n childMap.set(instance.constructor, instance);\n });\n }\n\n return React.createElement(\n StateContext.Provider,\n { value: childMap },\n props.children\n );\n }\n );\n}\n\nvar CONTAINER_DEBUG_CALLBACKS = [];\n\n// If your name isn't Sindre, this is not for you.\n// I might ruin your day suddenly if you depend on this without talking to me.\nfunction __SUPER_SECRET_CONTAINER_DEBUG_HOOK__(callback) {\n CONTAINER_DEBUG_CALLBACKS.push(callback);\n}\n\nexport { Container, Subscribe, Provider, __SUPER_SECRET_CONTAINER_DEBUG_HOOK__ };\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","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n options || (options = {})\n options.components || (options.components = empty)\n const result = []\n const arr = []\n let current\n let level = -1\n let inComponent = false\n\n // handle text at top level\n if (html.indexOf('<') !== 0) {\n var end = html.indexOf('<')\n result.push({\n type: 'text',\n content: end === -1 ? html : html.substring(0, end),\n })\n }\n\n html.replace(tagRE, function (tag, index) {\n if (inComponent) {\n if (tag !== '') {\n return\n } else {\n inComponent = false\n }\n }\n const isOpen = tag.charAt(1) !== '/'\n const isComment = tag.startsWith('\", j + 3);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n complexDoctype = true;\n }\n\n const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n break;\n\n default:\n const content = this._parseContent(s, j);\n\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n let isClosed = false;\n\n if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n isClosed = true;\n } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n Object.defineProperty(this, \"parentNode\", {\n value: null,\n writable: true\n });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n\n if (!childNodes) {\n return undefined;\n }\n\n const index = childNodes.indexOf(this);\n\n if (index === -1) {\n return undefined;\n }\n\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n\n return this.childNodes.map(function (child) {\n return child.textContent;\n }).join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor() {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n const [documentElement] = this._currentFragment;\n\n if (!documentElement) {\n return undefined;\n }\n\n return {\n documentElement\n };\n }\n\n onResolveEntity(name) {\n switch (name) {\n case \"apos\":\n return \"'\";\n }\n\n return super.onResolveEntity(name);\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n\n const node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n\n this._currentFragment.push(node);\n\n if (isEmpty) {\n return;\n }\n\n this._stack.push(this._currentFragment);\n\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n\n if (!lastElement) {\n return;\n }\n\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n\n}\n\nexports.SimpleXMLParser = SimpleXMLParser;","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFDataTransportStream = void 0;\n\nvar _util = require(\"../shared/util.js\");\n\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n (0, _util.assert)(pdfDataRangeTransport);\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n const initialData = params.initialData;\n\n if (initialData && initialData.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n\n rangeReader._enqueue(buffer);\n\n return true;\n });\n\n (0, _util.assert)(found);\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n const firstReader = this._rangeReaders[0];\n\n if (firstReader && firstReader.onProgress) {\n firstReader.onProgress({\n loaded: evt.loaded\n });\n }\n } else {\n const fullReader = this._fullRequestReader;\n\n if (fullReader && fullReader.onProgress) {\n fullReader.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader);\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone);\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n this._rangeReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeReaders.slice(0);\n\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n\n this._pdfDataRangeTransport.abort();\n }\n\n}\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n\n this._done = true;\n }\n\n}\n\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n this._done = true;\n\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._stream._removeRangeReader(this);\n }\n\n}","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebGLContext = void 0;\n\nvar _util = require(\"../shared/util.js\");\n\nclass WebGLContext {\n constructor({\n enable = false\n }) {\n this._enabled = enable === true;\n }\n\n get isEnabled() {\n let enabled = this._enabled;\n\n if (enabled) {\n enabled = WebGLUtils.tryInitGL();\n }\n\n return (0, _util.shadow)(this, \"isEnabled\", enabled);\n }\n\n composeSMask({\n layer,\n mask,\n properties\n }) {\n return WebGLUtils.composeSMask(layer, mask, properties);\n }\n\n drawFigures({\n width,\n height,\n backgroundColor,\n figures,\n context\n }) {\n return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);\n }\n\n clear() {\n WebGLUtils.cleanup();\n }\n\n}\n\nexports.WebGLContext = WebGLContext;\n\nvar WebGLUtils = function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error(\"Error during shader compilation: \" + errorMsg);\n }\n\n return shader;\n }\n\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error(\"Error during program linking: \" + errorMsg);\n }\n\n return program;\n }\n\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n currentCanvas = document.createElement(\"canvas\");\n currentGL = currentCanvas.getContext(\"webgl\", {\n premultipliedalpha: false\n });\n }\n\n var smaskVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } \";\n var smaskFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } \";\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.backdropLocation = gl.getUniformLocation(program, \"u_backdrop\");\n cache.subtypeLocation = gl.getUniformLocation(program, \"u_subtype\");\n var texCoordLocation = gl.getAttribLocation(program, \"a_texCoord\");\n var texLayerLocation = gl.getUniformLocation(program, \"u_image\");\n var texMaskLocation = gl.getUniformLocation(program, \"u_mask\");\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width,\n height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n\n var cache = smaskCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n\n gl.uniform1i(cache.subtypeLocation, properties.subtype === \"Luminosity\" ? 1 : 0);\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n gl.flush();\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n return canvas;\n }\n\n var figuresVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } \";\n var figuresFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } \";\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.scaleLocation = gl.getUniformLocation(program, \"u_scale\");\n cache.offsetLocation = gl.getUniformLocation(program, \"u_offset\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.colorLocation = gl.getAttribLocation(program, \"a_color\");\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n\n var cache = figuresCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n var count = 0;\n var i, ii, rows;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case \"lattice\":\n rows = figures[i].coords.length / figures[i].verticesPerRow | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n\n case \"triangles\":\n count += figures[i].coords.length;\n break;\n }\n }\n\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords,\n colorsMap = context.colors;\n var pIndex = 0,\n cIndex = 0;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n\n switch (figure.type) {\n case \"lattice\":\n var cols = figure.verticesPerRow;\n rows = ps.length / cols | 0;\n\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n\n break;\n\n case \"triangles\":\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n\n break;\n }\n }\n\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n\n gl.clear(gl.COLOR_BUFFER_BIT);\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n gl.drawArrays(gl.TRIANGLES, 0, count);\n gl.flush();\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n return canvas;\n }\n\n return {\n tryInitGL() {\n try {\n generateGL();\n return !!currentGL;\n } catch (ex) {}\n\n return false;\n },\n\n composeSMask,\n drawFigures,\n\n cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n\n smaskCache = null;\n figuresCache = null;\n }\n\n };\n}();","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderTextLayer = void 0;\n\nvar _util = require(\"../shared/util.js\");\n\nvar renderTextLayer = function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n function appendText(task, geom, styles) {\n var textDiv = document.createElement(\"span\");\n var textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1\n };\n\n task._textDivs.push(textDiv);\n\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n return;\n }\n\n var tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);\n var fontAscent = fontHeight;\n\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n let left, top;\n\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n textDiv.textContent = geom.str;\n\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n\n if (geom.str.length > 1) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1,\n angleSin = 0;\n\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n\n var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n var divHeight = fontHeight;\n var m, b;\n\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n\n var divProperties = task._textDivProperties.get(div);\n\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n task._textDivProperties.set(div, divProperties);\n\n continue;\n }\n\n var e = expanded[i],\n b = bounds[i];\n var m = b.m,\n c = m[0],\n s = m[1];\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, i) {\n var t = _util.Util.applyTransform(p, m);\n\n ts[i + 0] = c && (e.left - t[0]) / c;\n ts[i + 4] = s && (e.top - t[1]) / s;\n ts[i + 8] = c && (e.right - t[0]) / c;\n ts[i + 12] = s && (e.bottom - t[1]) / s;\n ts[i + 16] = s && (e.left - t[0]) / -s;\n ts[i + 20] = c && (e.top - t[1]) / c;\n ts[i + 24] = s && (e.right - t[0]) / -s;\n ts[i + 28] = c && (e.bottom - t[1]) / c;\n ts[i + 32] = c && (e.left - t[0]) / -c;\n ts[i + 36] = s && (e.top - t[1]) / -s;\n ts[i + 40] = c && (e.right - t[0]) / -c;\n ts[i + 44] = s && (e.bottom - t[1]) / -s;\n ts[i + 48] = s && (e.left - t[0]) / s;\n ts[i + 52] = c && (e.top - t[1]) / -c;\n ts[i + 56] = s && (e.right - t[0]) / s;\n ts[i + 60] = c && (e.bottom - t[1]) / -c;\n });\n\n var findPositiveMin = function (ts, offset, count) {\n var result = 0;\n\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n\n return result;\n };\n\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0\n };\n });\n boxes.map(function (box, i) {\n var e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary\n }];\n bounds.forEach(function (boundary) {\n var i = 0;\n\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n\n var j = horizon.length - 1;\n\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q,\n k,\n maxXNew = -Infinity;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n\n if (affectedBoundary.x2 > boundary.x1) {\n xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n xNew = affectedBoundary.x2New;\n }\n\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n boundary.x1New = maxXNew;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n if (affectedBoundary.x2 > boundary.x1) {\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n var changedHorizon = [],\n lastBoundary = null;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n\n if (lastBoundary === useBoundary) {\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary\n });\n lastBoundary = useBoundary;\n }\n }\n\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary\n });\n }\n\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary\n });\n }\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n\n var used = false;\n\n for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));\n });\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n function TextLayerRenderTask({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!(globalThis.FontInspector && globalThis.FontInspector.enabled);\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = (0, _util.createPromiseCapability)();\n this._renderTimer = null;\n this._bounds = [];\n\n this._capability.promise.finally(() => {\n if (this._layoutTextCtx) {\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n }).catch(() => {});\n }\n\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n this._canceled = true;\n\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\"));\n\n this._reader = null;\n }\n\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let transform = \"\";\n\n if (textDivProperties.canvasWidth !== 0) {\n const {\n fontSize,\n fontFamily\n } = textDiv.style;\n\n if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n const {\n width\n } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = `scaleX(${textDivProperties.scale})`;\n }\n }\n\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n\n textDiv.style.transform = transform;\n }\n\n this._textDivProperties.set(textDiv, textDivProperties);\n\n this._container.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n const capability = (0, _util.createPromiseCapability)();\n let styleCache = Object.create(null);\n const canvas = document.createElement(\"canvas\");\n canvas.mozOpaque = true;\n this._layoutTextCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n\n this._processItems(textItems, textStyles);\n\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n\n this._processItems(value.items, styleCache);\n\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' + \" parameters specified.\");\n }\n\n capability.promise.then(() => {\n styleCache = null;\n\n if (!timeout) {\n render(this);\n } else {\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n const transformBuf = [],\n paddingBuf = [];\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n\n const divProps = this._textDivProperties.get(div);\n\n if (divProps.isWhitespace) {\n continue;\n }\n\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n };\n\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection\n });\n\n task._render(renderParameters.timeout);\n\n return task;\n }\n\n return renderTextLayer;\n}();\n\nexports.renderTextLayer = renderTextLayer;","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AnnotationLayer = void 0;\n\nvar _display_utils = require(\"./display_utils.js\");\n\nvar _util = require(\"../shared/util.js\");\n\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case _util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n\n return new PushButtonWidgetAnnotationElement(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n\n return new WidgetAnnotationElement(parameters);\n\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n\n}\n\nclass AnnotationElement {\n constructor(parameters, isRenderable = false, ignoreBorder = false) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n this.svgFactory = parameters.svgFactory;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n container.setAttribute(\"data-annotation-id\", data.id);\n\n const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n container.style.transformOrigin = `-${rect[0]}px -${rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\n if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n return container;\n }\n\n _createPopup(container, trigger, data) {\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n modificationDate: data.modificationDate,\n contents: data.contents,\n hideWrapper: true\n });\n const popup = popupElement.render();\n popup.style.left = container.style.width;\n container.appendChild(popup);\n }\n\n render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);\n super(parameters, isRenderable);\n }\n\n render() {\n this.container.className = \"linkAnnotation\";\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n (0, _display_utils.addLinkAttributes)(link, {\n url: data.url,\n target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,\n rel: linkService.externalLinkRel,\n enabled: linkService.externalLinkEnabled\n });\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else {\n this._bindLink(link, data.dest);\n }\n\n this.container.appendChild(link);\n return this.container;\n }\n\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n\n link.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n\n return false;\n };\n\n if (destination) {\n link.className = \"internalLink\";\n }\n }\n\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n\n link.className = \"internalLink\";\n }\n\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, isRenderable);\n }\n\n render() {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n this.container.className = \"textWidgetAnnotation\";\n let element = null;\n\n if (this.renderInteractiveForms) {\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = this.data.fieldValue;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", this.data.fieldValue);\n }\n\n element.disabled = this.data.readOnly;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n let font = null;\n\n if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {\n font = this.page.commonObjs.get(this.data.fontRefName);\n }\n\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n\n _setTextStyle(element, font) {\n const style = element.style;\n style.fontSize = `${this.data.fontSize}px`;\n style.direction = this.data.fontDirection < 0 ? \"rtl\" : \"ltr\";\n\n if (!font) {\n return;\n }\n\n let bold = \"normal\";\n\n if (font.black) {\n bold = \"900\";\n } else if (font.bold) {\n bold = \"bold\";\n }\n\n style.fontWeight = bold;\n style.fontStyle = font.italic ? \"italic\" : \"normal\";\n const fontFamily = font.loadedName ? `\"${font.loadedName}\", ` : \"\";\n const fallbackName = font.fallbackName || \"Helvetica, sans-serif\";\n style.fontFamily = fontFamily + fallbackName;\n }\n\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n const element = document.createElement(\"input\");\n element.disabled = this.data.readOnly;\n element.type = \"checkbox\";\n\n if (this.data.fieldValue && this.data.fieldValue !== \"Off\") {\n element.setAttribute(\"checked\", true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const element = document.createElement(\"input\");\n element.disabled = this.data.readOnly;\n element.type = \"radio\";\n element.name = this.data.fieldName;\n\n if (this.data.fieldValue === this.data.buttonValue) {\n element.setAttribute(\"checked\", true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n render() {\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n return container;\n }\n\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const selectElement = document.createElement(\"select\");\n selectElement.disabled = this.data.readOnly;\n\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.includes(option.displayValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n\n selectElement.appendChild(optionElement);\n }\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n render() {\n const IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElement = this.layer.querySelector(selector);\n\n if (!parentElement) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n modificationDate: this.data.modificationDate,\n contents: this.data.contents\n });\n const parentLeft = parseFloat(parentElement.style.left);\n const parentWidth = parseFloat(parentElement.style.width);\n this.container.style.transformOrigin = `-${parentLeft + parentWidth}px -${parentElement.style.top}`;\n this.container.style.left = `${parentLeft + parentWidth}px`;\n this.container.appendChild(popup.render());\n return this.container;\n }\n\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.modificationDate = parameters.modificationDate;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.setAttribute(\"hidden\", true);\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n const color = this.color;\n\n if (color) {\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.textContent = this.title;\n popup.appendChild(title);\n\n const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.appendChild(modificationDate);\n }\n\n const contents = this._formatContents(this.contents);\n\n popup.appendChild(contents);\n this.trigger.addEventListener(\"click\", this._toggle.bind(this));\n this.trigger.addEventListener(\"mouseover\", this._show.bind(this, false));\n this.trigger.addEventListener(\"mouseout\", this._hide.bind(this, false));\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n _formatContents(contents) {\n const p = document.createElement(\"p\");\n const lines = contents.split(/(?:\\r\\n?|\\n)/);\n\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n\n return p;\n }\n\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n\n if (this.hideElement.hasAttribute(\"hidden\")) {\n this.hideElement.removeAttribute(\"hidden\");\n this.container.style.zIndex += 1;\n }\n }\n\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n\n if (!this.hideElement.hasAttribute(\"hidden\") && !this.pinned) {\n this.hideElement.setAttribute(\"hidden\", true);\n this.container.style.zIndex -= 1;\n }\n }\n\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n svg.appendChild(line);\n this.container.append(svg);\n\n this._createPopup(this.container, line, data);\n\n return this.container;\n }\n\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"none\");\n svg.appendChild(square);\n this.container.append(svg);\n\n this._createPopup(this.container, square, data);\n\n return this.container;\n }\n\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"none\");\n svg.appendChild(circle);\n this.container.append(svg);\n\n this._createPopup(this.container, circle, data);\n\n return this.container;\n }\n\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n let points = [];\n\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n svg.appendChild(polyline);\n this.container.append(svg);\n\n this._createPopup(this.container, polyline, data);\n\n return this.container;\n }\n\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n let points = [];\n\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n\n this._createPopup(this.container, polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"highlightAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"underlineAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"squigglyAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"strikeoutAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, true);\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n this.content = content;\n\n if (this.linkService.eventBus) {\n this.linkService.eventBus.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: (0, _util.stringToPDFString)(filename),\n filename,\n content\n });\n }\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n _download() {\n if (!this.downloadManager) {\n (0, _util.warn)(\"Download cannot be started due to unavailable download manager\");\n return;\n }\n\n this.downloadManager.downloadData(this.content, this.filename, \"\");\n }\n\n}\n\nclass AnnotationLayer {\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n\n if (data.annotationType === _util.AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n\n sortedAnnotations.push(data);\n }\n\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderInteractiveForms: parameters.renderInteractiveForms || false,\n svgFactory: new _display_utils.DOMSVGFactory()\n });\n\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n }\n\n static update(parameters) {\n for (const data of parameters.annotations) {\n const element = parameters.div.querySelector(`[data-annotation-id=\"${data.id}\"]`);\n\n if (element) {\n element.style.transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n }\n }\n\n parameters.div.removeAttribute(\"hidden\");\n }\n\n}\n\nexports.AnnotationLayer = AnnotationLayer;","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SVGGraphics = void 0;\n\nvar _util = require(\"../shared/util.js\");\n\nvar _display_utils = require(\"./display_utils.js\");\n\nvar _is_node = require(\"../shared/is_node.js\");\n\nlet SVGGraphics = function () {\n throw new Error(\"Not implemented: SVGGraphics\");\n};\n\nexports.SVGGraphics = SVGGraphics;\n{\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const convertImgDataToPng = function () {\n const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n const CHUNK_WRAPPER_SIZE = 12;\n const crcTable = new Int32Array(256);\n\n for (let i = 0; i < 256; i++) {\n let c = i;\n\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n const crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n\n return b << 16 | a;\n }\n\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n\n try {\n let input;\n\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n\n const output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n let pos = 0;\n\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n const adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n\n default:\n throw new Error(\"invalid format\");\n }\n\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n\n for (let y = 0; y < height; y++) {\n offsetLiterals++;\n\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n const idat = deflateSync(literals);\n const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return (0, _util.createObjectURL)(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n }\n\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n\n return opTree;\n }\n\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const s = value.toFixed(10);\n let i = s.length - 1;\n\n if (s[i] !== \"0\") {\n return s;\n }\n\n do {\n i--;\n } while (s[i] === \"0\");\n\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = Math.acos(m[0]) * 180 / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n\n return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n }\n\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n exports.SVGGraphics = SVGGraphics = class SVGGraphics {\n constructor(commonObjs, objs, forceDataSchema) {\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n\n for (const op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n\n case _util.OPS.dependency:\n break;\n\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.endText:\n this.endText();\n break;\n\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n\n case _util.OPS.fill:\n this.fill();\n break;\n\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n\n case _util.OPS.stroke:\n this.stroke();\n break;\n\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n\n case _util.OPS.paintJpegXObject:\n this.paintJpegXObject(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n\n case _util.OPS.closePath:\n this.closePath();\n break;\n\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n\n case _util.OPS.endPath:\n this.endPath();\n break;\n\n case 92:\n this.group(opTreeElement.items);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.sqrt(a * a + b * b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n let x = 0;\n\n for (const glyph of glyphs) {\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if ((0, _util.isNum)(glyph)) {\n x += -glyph * fontSize * 0.001;\n continue;\n }\n\n const width = glyph.width;\n const character = glyph.fontChar;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const charWidth = width * widthAdvanceScale + spacing * fontDirection;\n\n if (!glyph.isInFont && !font.missingFile) {\n x += charWidth;\n continue;\n }\n\n current.xcoords.push(current.x + x);\n current.tspan.textContent += character;\n x += charWidth;\n }\n\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n let textMatrix = current.textMatrix;\n\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n }\n\n endText() {\n const current = this.current;\n\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeCssRgb(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n\n const inv = _util.Util.inverseTransform(this.transformMatrix);\n\n const bl = _util.Util.applyTransform([0, 0], inv);\n\n const br = _util.Util.applyTransform([0, height], inv);\n\n const ul = _util.Util.applyTransform([width, 0], inv);\n\n const ur = _util.Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n\n return this._makeShadingPattern(args);\n }\n\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || _util.IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n const tilingId = `shading${shadingCount++}`;\n\n const [tx0, ty0] = _util.Util.applyTransform([x0, y0], matrix);\n\n const [tx1, ty1] = _util.Util.applyTransform([x1, y1], matrix);\n\n const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n\n if (paintType === 2) {\n const cssColor = _util.Util.makeCssRgb(...color);\n\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n _makeShadingPattern(args) {\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n\n case \"Dummy\":\n return \"hotpink\";\n\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const clipElement = current.element.cloneNode(true);\n\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n current.clipGroup = null;\n this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n\n current.activeClipUrl = `url(#${clipId})`;\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {}\n\n setFlatness(flatness) {}\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value);\n break;\n\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n\n case \"ca\":\n this.setFillAlpha(value);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fill();\n }\n\n fillStroke() {\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintJpegXObject(objId, w, h) {\n const imgObj = this.objs.get(objId);\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgObj.src);\n imgEl.setAttributeNS(null, \"width\", pf(w));\n imgEl.setAttributeNS(null, \"height\", pf(h));\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-h));\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / w)} ${pf(-1 / h)})`);\n\n this._ensureTransformGroup().appendChild(imgEl);\n }\n\n paintImageXObject(objId) {\n const imgData = this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n\n return this.current.clipGroup;\n }\n\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n\n return this.tgrp;\n }\n\n };\n}","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNodeStream = void 0;\n\nvar _util = require(\"../shared/util.js\");\n\nvar _network_utils = require(\"./network_utils.js\");\n\nconst fs = require(\"fs\");\n\nconst http = require(\"http\");\n\nconst https = require(\"https\");\n\nconst url = require(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader);\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n this._rangeRequestReaders.push(rangeReader);\n\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFNodeStream = PDFNodeStream;\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._headersCapability = (0, _util.createPromiseCapability)();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nfunction createRequestOptions(url, headers) {\n return {\n protocol: url.protocol,\n auth: url.auth,\n host: url.hostname,\n port: url.port,\n path: url.path,\n method: \"GET\",\n headers\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._headersCapability.resolve();\n\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n return this._readableStream.headers[name.toLowerCase()];\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n\n this._headersCapability.reject(reason);\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n this._httpHeaders[property] = value;\n }\n\n this._httpHeaders[\"Range\"] = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n\n this._setReadableStream(response);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n\n this._headersCapability.resolve();\n });\n }\n\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n\n}","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n tmp = rfc2231getparam(contentDisposition);\n\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const bytes = Array.from(value, function (ch) {\n return ch.charCodeAt(0) & 0xff;\n });\n value = decoder.decode(new Uint8Array(bytes));\n needsEncodingFixup = false;\n } catch (e) {\n if (/^utf-?8$/i.test(encoding)) {\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n\n return value;\n }\n\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n\n return value;\n }\n\n function rfc2231getparam(contentDisposition) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n while ((match = iter.exec(contentDisposition)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n\n if (n in matches) {\n if (n === 0) {\n break;\n }\n\n continue;\n }\n\n matches[n] = [quot, part];\n }\n\n const parts = [];\n\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n\n if (quot) {\n part = unescape(part);\n\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n\n parts.push(part);\n }\n\n return parts.join(\"\");\n }\n\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n\n value = parts.join('\"');\n }\n\n return value;\n }\n\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n\n if (encodingend === -1) {\n return extvalue;\n }\n\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (_, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (_, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n\n try {\n text = atob(text);\n } catch (e) {}\n\n return textdecode(charset, text);\n });\n }\n\n return \"\";\n}","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNetworkStream = void 0;\n\nvar _util = require(\"../shared/util.js\");\n\nvar _network_utils = require(\"./network_utils.js\");\n\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n const array = (0, _util.stringToBytes)(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || {};\n this.withCredentials = args.withCredentials || false;\n\n this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n xhr.setRequestHeader(property, value);\n }\n\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n if (pendingRequest.onProgress) {\n pendingRequest.onProgress(evt);\n }\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n const xhr = pendingRequest.xhr;\n\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n }\n\n hasPendingRequests() {\n for (const xhrId in this.pendingRequests) {\n return true;\n }\n\n return false;\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortAllRequests() {\n for (const xhrId in this.pendingRequests) {\n this.abortRequest(xhrId | 0);\n }\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n\n}\n\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader);\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(args) {\n if (args) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: args.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(args.chunk);\n }\n }\n\n this._done = true;\n\n if (this._cachedChunks.length > 0) {\n return;\n }\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n _onError(status) {\n const url = this._url;\n const exception = (0, _network_utils.createResponseStatusError)(status, url);\n this._storedError = exception;\n\n this._headersReceivedCapability.reject(exception);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n\n this._requests = [];\n this._cachedChunks = [];\n }\n\n _onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength\n });\n }\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._headersReceivedCapability.reject(reason);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n\n this._fullRequestReader = null;\n }\n\n}\n\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._close();\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded\n });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n\n this._close();\n }\n\n}","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFFetchStream = void 0;\n\nvar _util = require(\"../shared/util.js\");\n\nvar _network_utils = require(\"./network_utils.js\");\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController && abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n headers.append(property, value);\n }\n\n return headers;\n}\n\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader);\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFFetchStream = PDFFetchStream;\n\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._reader = response.body.getReader();\n\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}\n\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._readCapability.resolve();\n\n this._reader = response.body.getReader();\n });\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { memo } from 'react';\nimport { DndContext, createDndContext } from './DndContext';\nvar refCount = 0;\n/**\n * A React component that provides the React-DnD context\n */\n\nexport var DndProvider = memo(function (_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _getDndContextValue = getDndContextValue(props),\n _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n manager = _getDndContextValue2[0],\n isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n\n\n React.useEffect(function () {\n if (isGlobalInstance) {\n refCount++;\n }\n\n return function () {\n if (isGlobalInstance) {\n refCount--;\n\n if (refCount === 0) {\n var context = getGlobalContext();\n context[instanceSymbol] = null;\n }\n }\n };\n }, []);\n return React.createElement(DndContext.Provider, {\n value: manager\n }, children);\n});\nDndProvider.displayName = 'DndProvider';\n\nfunction getDndContextValue(props) {\n if ('manager' in props) {\n var _manager = {\n dragDropManager: props.manager\n };\n return [_manager, false];\n }\n\n var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n var isGlobalInstance = !props.context;\n return [manager, isGlobalInstance];\n}\n\nvar instanceSymbol = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\n\nfunction createSingletonDndContext(backend) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n var ctx = context;\n\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = createDndContext(backend, context, options, debugMode);\n }\n\n return ctx[instanceSymbol];\n}\n\nfunction getGlobalContext() {\n return typeof global !== 'undefined' ? global : window;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nexport var DragSourceMonitorImpl = /*#__PURE__*/function () {\n function DragSourceMonitorImpl(manager) {\n _classCallCheck(this, DragSourceMonitorImpl);\n\n this.sourceId = null;\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DragSourceMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(sourceId) {\n this.sourceId = sourceId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.sourceId;\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n } finally {\n isCallingCanDrag = false;\n }\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n if (!this.sourceId) {\n return false;\n }\n\n invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n } finally {\n isCallingIsDragging = false;\n }\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.internalMonitor.getTargetIds();\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return this.internalMonitor.isSourcePublic();\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.internalMonitor.getSourceId();\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DragSourceMonitorImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nexport var SourceConnector = /*#__PURE__*/function () {\n function SourceConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, SourceConnector);\n\n this.hooks = wrapConnectorHooks({\n dragSource: function dragSource(node, options) {\n _this.clearDragSource();\n\n _this.dragSourceOptions = options || null;\n\n if (isRef(node)) {\n _this.dragSourceRef = node;\n } else {\n _this.dragSourceNode = node;\n }\n\n _this.reconnectDragSource();\n },\n dragPreview: function dragPreview(node, options) {\n _this.clearDragPreview();\n\n _this.dragPreviewOptions = options || null;\n\n if (isRef(node)) {\n _this.dragPreviewRef = node;\n } else {\n _this.dragPreviewNode = node;\n }\n\n _this.reconnectDragPreview();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dragSourceRef = null;\n this.dragSourceOptionsInternal = null; // The drag preview may either be attached via ref or connect function\n\n this.dragPreviewRef = null;\n this.dragPreviewOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDragSource = null;\n this.lastConnectedDragSourceOptions = null;\n this.lastConnectedDragPreview = null;\n this.lastConnectedDragPreviewOptions = null;\n this.backend = backend;\n }\n\n _createClass(SourceConnector, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (this.handlerId === newHandlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"reconnect\",\n value: function reconnect() {\n this.reconnectDragSource();\n this.reconnectDragPreview();\n }\n }, {\n key: \"reconnectDragSource\",\n value: function reconnectDragSource() {\n var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n\n if (didChange) {\n this.disconnectDragSource();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragSource) {\n this.lastConnectedDragSource = dragSource;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragSource = dragSource;\n this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n }\n }\n }, {\n key: \"reconnectDragPreview\",\n value: function reconnectDragPreview() {\n var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n\n if (didChange) {\n this.disconnectDragPreview();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragPreview) {\n this.lastConnectedDragPreview = dragPreview;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragPreview = dragPreview;\n this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n }\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didConnectedDragSourceChange\",\n value: function didConnectedDragSourceChange() {\n return this.lastConnectedDragSource !== this.dragSource;\n }\n }, {\n key: \"didConnectedDragPreviewChange\",\n value: function didConnectedDragPreviewChange() {\n return this.lastConnectedDragPreview !== this.dragPreview;\n }\n }, {\n key: \"didDragSourceOptionsChange\",\n value: function didDragSourceOptionsChange() {\n return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n }\n }, {\n key: \"didDragPreviewOptionsChange\",\n value: function didDragPreviewOptionsChange() {\n return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n }\n }, {\n key: \"disconnectDragSource\",\n value: function disconnectDragSource() {\n if (this.dragSourceUnsubscribe) {\n this.dragSourceUnsubscribe();\n this.dragSourceUnsubscribe = undefined;\n }\n }\n }, {\n key: \"disconnectDragPreview\",\n value: function disconnectDragPreview() {\n if (this.dragPreviewUnsubscribe) {\n this.dragPreviewUnsubscribe();\n this.dragPreviewUnsubscribe = undefined;\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }\n }, {\n key: \"clearDragSource\",\n value: function clearDragSource() {\n this.dragSourceNode = null;\n this.dragSourceRef = null;\n }\n }, {\n key: \"clearDragPreview\",\n value: function clearDragPreview() {\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dragSource;\n }\n }, {\n key: \"dragSourceOptions\",\n get: function get() {\n return this.dragSourceOptionsInternal;\n },\n set: function set(options) {\n this.dragSourceOptionsInternal = options;\n }\n }, {\n key: \"dragPreviewOptions\",\n get: function get() {\n return this.dragPreviewOptionsInternal;\n },\n set: function set(options) {\n this.dragPreviewOptionsInternal = options;\n }\n }, {\n key: \"dragSource\",\n get: function get() {\n return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n }\n }, {\n key: \"dragPreview\",\n get: function get() {\n return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n }\n }]);\n\n return SourceConnector;\n}();","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { registerSource } from '../../common/registration';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { DragSourceMonitorImpl } from '../../common/DragSourceMonitorImpl';\nimport { SourceConnector } from '../../common/SourceConnector';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nexport function useDragSourceMonitor() {\n var manager = useDragDropManager();\n var monitor = useMemo(function () {\n return new DragSourceMonitorImpl(manager);\n }, [manager]);\n var connector = useMemo(function () {\n return new SourceConnector(manager.getBackend());\n }, [manager]);\n return [monitor, connector];\n}\nexport function useDragHandler(spec, monitor, connector) {\n var manager = useDragDropManager();\n var handler = useMemo(function () {\n return {\n beginDrag: function beginDrag() {\n var _spec$current = spec.current,\n begin = _spec$current.begin,\n item = _spec$current.item;\n\n if (begin) {\n var beginResult = begin(monitor);\n invariant(beginResult == null || _typeof(beginResult) === 'object', 'dragSpec.begin() must either return an object, undefined, or null');\n return beginResult || item || {};\n }\n\n return item || {};\n },\n canDrag: function canDrag() {\n if (typeof spec.current.canDrag === 'boolean') {\n return spec.current.canDrag;\n } else if (typeof spec.current.canDrag === 'function') {\n return spec.current.canDrag(monitor);\n } else {\n return true;\n }\n },\n isDragging: function isDragging(globalMonitor, target) {\n var isDragging = spec.current.isDragging;\n return isDragging ? isDragging(monitor) : target === globalMonitor.getSourceId();\n },\n endDrag: function endDrag() {\n var end = spec.current.end;\n\n if (end) {\n end(monitor.getItem(), monitor);\n }\n\n connector.reconnect();\n }\n };\n }, []);\n useIsomorphicLayoutEffect(function registerHandler() {\n var _registerSource = registerSource(spec.current.item.type, handler, manager),\n _registerSource2 = _slicedToArray(_registerSource, 2),\n handlerId = _registerSource2[0],\n unregister = _registerSource2[1];\n\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, []);\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useRef, useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { useMonitorOutput } from './internal/useMonitorOutput';\nimport { useIsomorphicLayoutEffect } from './internal/useIsomorphicLayoutEffect';\nimport { useDragSourceMonitor, useDragHandler } from './internal/drag';\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification *\n */\n\nexport function useDrag(spec) {\n var specRef = useRef(spec);\n specRef.current = spec; // TODO: wire options into createSourceConnector\n\n invariant(spec.item != null, 'item must be defined');\n invariant(spec.item.type != null, 'item type must be defined');\n\n var _useDragSourceMonitor = useDragSourceMonitor(),\n _useDragSourceMonitor2 = _slicedToArray(_useDragSourceMonitor, 2),\n monitor = _useDragSourceMonitor2[0],\n connector = _useDragSourceMonitor2[1];\n\n useDragHandler(specRef, monitor, connector);\n var result = useMonitorOutput(monitor, specRef.current.collect || function () {\n return {};\n }, function () {\n return connector.reconnect();\n });\n var connectDragSource = useMemo(function () {\n return connector.hooks.dragSource();\n }, [connector]);\n var connectDragPreview = useMemo(function () {\n return connector.hooks.dragPreview();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dragSourceOptions = specRef.current.options || null;\n connector.reconnect();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dragPreviewOptions = specRef.current.previewOptions || null;\n connector.reconnect();\n }, [connector]);\n return [result, connectDragSource, connectDragPreview];\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nexport var TargetConnector = /*#__PURE__*/function () {\n function TargetConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, TargetConnector);\n\n this.hooks = wrapConnectorHooks({\n dropTarget: function dropTarget(node, options) {\n _this.clearDropTarget();\n\n _this.dropTargetOptions = options;\n\n if (isRef(node)) {\n _this.dropTargetRef = node;\n } else {\n _this.dropTargetNode = node;\n }\n\n _this.reconnect();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dropTargetRef = null;\n this.dropTargetOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDropTarget = null;\n this.lastConnectedDropTargetOptions = null;\n this.backend = backend;\n }\n\n _createClass(TargetConnector, [{\n key: \"reconnect\",\n value: function reconnect() {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n\n if (didChange) {\n this.disconnectDropTarget();\n }\n\n var dropTarget = this.dropTarget;\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dropTarget) {\n this.lastConnectedDropTarget = dropTarget;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDropTarget = dropTarget;\n this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n }\n }\n }, {\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (newHandlerId === this.handlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didDropTargetChange\",\n value: function didDropTargetChange() {\n return this.lastConnectedDropTarget !== this.dropTarget;\n }\n }, {\n key: \"didOptionsChange\",\n value: function didOptionsChange() {\n return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n }\n }, {\n key: \"disconnectDropTarget\",\n value: function disconnectDropTarget() {\n if (this.unsubscribeDropTarget) {\n this.unsubscribeDropTarget();\n this.unsubscribeDropTarget = undefined;\n }\n }\n }, {\n key: \"clearDropTarget\",\n value: function clearDropTarget() {\n this.dropTargetRef = null;\n this.dropTargetNode = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dropTarget;\n }\n }, {\n key: \"dropTargetOptions\",\n get: function get() {\n return this.dropTargetOptionsInternal;\n },\n set: function set(options) {\n this.dropTargetOptionsInternal = options;\n }\n }, {\n key: \"dropTarget\",\n get: function get() {\n return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n }\n }]);\n\n return TargetConnector;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrop = false;\nexport var DropTargetMonitorImpl = /*#__PURE__*/function () {\n function DropTargetMonitorImpl(manager) {\n _classCallCheck(this, DropTargetMonitorImpl);\n\n this.targetId = null;\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DropTargetMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(targetId) {\n this.targetId = targetId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.targetId;\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"canDrop\",\n value: function canDrop() {\n // Cut out early if the target id has not been set. This should prevent errors\n // where the user has an older version of dnd-core like in\n // https://github.com/react-dnd/react-dnd/issues/1310\n if (!this.targetId) {\n return false;\n }\n\n invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n } finally {\n isCallingCanDrop = false;\n }\n }\n }, {\n key: \"isOver\",\n value: function isOver(options) {\n if (!this.targetId) {\n return false;\n }\n\n return this.internalMonitor.isOverTarget(this.targetId, options);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DropTargetMonitorImpl;\n}();","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useMemo } from 'react';\nimport { registerTarget } from '../../common/registration';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { TargetConnector } from '../../common/TargetConnector';\nimport { DropTargetMonitorImpl } from '../../common/DropTargetMonitorImpl';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nexport function useDropTargetMonitor() {\n var manager = useDragDropManager();\n var monitor = useMemo(function () {\n return new DropTargetMonitorImpl(manager);\n }, [manager]);\n var connector = useMemo(function () {\n return new TargetConnector(manager.getBackend());\n }, [manager]);\n return [monitor, connector];\n}\nexport function useDropHandler(spec, monitor, connector) {\n var manager = useDragDropManager();\n var handler = useMemo(function () {\n return {\n canDrop: function canDrop() {\n var canDrop = spec.current.canDrop;\n return canDrop ? canDrop(monitor.getItem(), monitor) : true;\n },\n hover: function hover() {\n var hover = spec.current.hover;\n\n if (hover) {\n hover(monitor.getItem(), monitor);\n }\n },\n drop: function drop() {\n var drop = spec.current.drop;\n\n if (drop) {\n return drop(monitor.getItem(), monitor);\n }\n }\n };\n }, [monitor]);\n useIsomorphicLayoutEffect(function registerHandler() {\n var _registerTarget = registerTarget(spec.current.accept, handler, manager),\n _registerTarget2 = _slicedToArray(_registerTarget, 2),\n handlerId = _registerTarget2[0],\n unregister = _registerTarget2[1];\n\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, [monitor, connector]);\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useRef, useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { useMonitorOutput } from './internal/useMonitorOutput';\nimport { useIsomorphicLayoutEffect } from './internal/useIsomorphicLayoutEffect';\nimport { useDropHandler, useDropTargetMonitor } from './internal/drop';\n/**\n * useDropTarget Hook\n * @param spec The drop target specification\n */\n\nexport function useDrop(spec) {\n var specRef = useRef(spec);\n specRef.current = spec;\n invariant(spec.accept != null, 'accept must be defined');\n\n var _useDropTargetMonitor = useDropTargetMonitor(),\n _useDropTargetMonitor2 = _slicedToArray(_useDropTargetMonitor, 2),\n monitor = _useDropTargetMonitor2[0],\n connector = _useDropTargetMonitor2[1];\n\n useDropHandler(specRef, monitor, connector);\n var result = useMonitorOutput(monitor, specRef.current.collect || function () {\n return {};\n }, function () {\n return connector.reconnect();\n });\n var connectDropTarget = useMemo(function () {\n return connector.hooks.dropTarget();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dropTargetOptions = spec.options || null;\n connector.reconnect();\n }, [spec.options]);\n return [result, connectDropTarget];\n}"],"sourceRoot":""}