{"version":3,"sources":["webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.search.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/get-built-in.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/libs/tween.module.min.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/redefine.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/_three@0.117.1@three/build/three.module.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/string-pad-webkit-bug.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.replace.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/shared-key.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/transformData.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/buildURL.js","webpack:///./node_modules/_resize-observer-polyfill@1.5.1@resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_is-object.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/loaders/DRACOLoader.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/cancel/Cancel.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-gopn.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-create.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/html.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-iteration.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/set-global.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/an-instance.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/is-regexp.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_hide.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-pie.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/is-pure.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_defined.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/require-object-coercible.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/cancel/isCancel.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/locale/lang/zh-CN.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/cancel/CancelToken.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/own-keys.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/set-species.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/select.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/radio.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_string-at.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/shared.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/internal-state.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-assign.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-from.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/settle.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/indexed-object.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/host-report-errors.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/mixins/focus.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_shared-key.js","webpack:///./node_modules/_sortablejs@1.10.2@sortablejs/modular/sortable.esm.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.promise.finally.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/mixins/locale.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-keys-internal.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/to-length.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/element-ui.common.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/date.js","webpack:///./node_modules/_normalize-wheel@1.0.1@normalize-wheel/src/isEventSupported.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.object.to-string.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-for-each.js","webpack:///./node_modules/_normalize-wheel@1.0.1@normalize-wheel/src/UserAgent_DEPRECATED.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.from.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/this-number-value.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/util.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/rule/required.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/rule/whitespace.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/rule/type.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/rule/range.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/rule/enum.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/rule/pattern.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/rule/index.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/string.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/method.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/number.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/boolean.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/regexp.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/integer.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/float.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/array.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/object.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/enum.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/pattern.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/date.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/required.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/type.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/validator/index.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/messages.js","webpack:///./node_modules/_async-validator@1.8.5@async-validator/es/index.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/defaults.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/to-string-tag-support.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/is-object.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/loaders/GLTFLoader_z.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.split.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/libs/inflate.module.min.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/curves/NURBSUtils.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/curves/NURBSCurve.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/loaders/FBXLoader.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_to-object.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/button.js","webpack:///./node_modules/_vuedraggable@2.24.3@vuedraggable/dist/vuedraggable.umd.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/merge.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/classof-raw.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-gopd.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/date-util.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/create-html.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/engine-is-ios.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_to-integer.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/iterableToArray/index.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/fn/symbol/index.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/_normalize-wheel@1.0.1@normalize-wheel/src/ExecutionEnvironment.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/set-to-string-tag.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_iter-step.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/an-object.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/classCallCheck/_index.mjs","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/export.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/to-object.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/typeof.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_iterators.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/axios.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_enum-keys.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/to-primitive.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/enum-bug-keys.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_is-array.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/aria-dialog.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/arrayLikeToArray/index.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/mixins/migrating.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/scrollbar.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.object.keys.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.concat.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.iterator.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/define-iterator.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/Axios.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-keys.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-includes.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_shared.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/string-multibyte.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/buildFullPath.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/locale/format.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/loaders/MTLLoader.js","webpack:///./node_modules/_viewerjs@1.11.1@viewerjs/dist/viewer.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.find.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/objectSpread2/_index.mjs","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/promise-resolve.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/spread.js","webpack:///./node_modules/_normalize-wheel@1.0.1@normalize-wheel/index.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/InterceptorManager.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-define-property.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-dp.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/_deepmerge@1.5.2@deepmerge/dist/cjs.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/create-property.js","webpack:///./node_modules/_vue-loader@15.9.6@vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/iterators.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_to-primitive.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/perform.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/input.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_descriptors.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/path.js","webpack:///./node_modules/_throttle-debounce@1.1.0@throttle-debounce/throttle.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/descriptors.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-fill.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/_path-browserify@0.0.1@path-browserify/index.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.filter.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/_throttle-debounce@1.1.0@throttle-debounce/index.js","webpack:///./node_modules/_qs@6.9.6@qs/lib/stringify.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/engine-is-webos-webkit.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-species-create.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/checkbox-group.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.symbol.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_iobject.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/extends.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/loaders/OBJLoader.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/not-a-regexp.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_wks-ext.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-dps.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_ctx.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/button-group.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/global.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_meta.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/popup/index.js","webpack:///./node_modules/_qs@6.9.6@qs/lib/index.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/classof.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/get-substitution.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/unsupportedIterableToArray/index.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/task.js","webpack:///./node_modules/_normalize-wheel@1.0.1@normalize-wheel/src/normalizeWheel.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/string-html-forced.js","webpack:///./node_modules/_vuex@3.6.2@vuex/dist/vuex.esm.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_iter-define.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/controls/OrbitControls.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/dom.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/native-weak-map.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/resize-event.js","webpack:///./node_modules/_qs@6.9.6@qs/lib/utils.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/symbol.js","webpack:///./node_modules/_weixin-js-sdk@1.6.0@weixin-js-sdk/index.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/progress.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_export.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/loaders/RGBELoader.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/native-promise-constructor.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/es6.object.assign.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/scrollbar-width.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.function.name.js","webpack:///./node_modules/_axios@0.19.2@axios/index.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_cof.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/cookies.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.fill.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/dom-iterables.js","webpack:///./node_modules/_js-md5@0.7.3@js-md5/src/md5.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/popup/popup-manager.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/to-integer.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_to-iobject.js","webpack:///./node_modules/_vue-router@3.5.1@vue-router/dist/vue-router.esm.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_wks-define.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.splice.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/controls/TransformControls.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/well-known-symbol.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/redefine-all.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-gops.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/create-property-descriptor.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.map.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_a-function.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_an-object.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/input-number.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.join.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/vue-popper.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_fails.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/hidden-keys.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/effects/StereoEffect.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/tooltip.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/fn/object/assign.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.object.assign.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/adapters/xhr.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/is-array.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/popover.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/regexp-flags.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_global.js","webpack:///./node_modules/_vue@2.6.12@vue/dist/vue.runtime.esm.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.regexp.exec.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-create.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/mixins/emitter.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/microtask.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/toConsumableArray/_index.mjs","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.sub.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/native-symbol.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/engine-v8-version.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/inherit-if-required.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/has.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-method-is-strict.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/string-repeat.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/iterate.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_html.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/new-promise-capability.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/species-constructor.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/engine-user-agent.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/to-indexed-object.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/types.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/same-value.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/a-possible-prototype.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-define-properties.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/popper.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/fails.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/inspect-source.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/enhanceError.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/after-leave.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/cascader-panel.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_library.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/aria-utils.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.slice.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/vdom.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/advance-string-index.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/combineURLs.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/createError.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/defineProperty/index.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/dispatchRequest.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/core/mergeConfig.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/_throttle-debounce@1.1.0@throttle-debounce/debounce.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/shared-store.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-to-string.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/tag.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_core.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.symbol.description.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-keys.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_property-desc.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.pad-start.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/get-iterator-method.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/option.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/clickoutside.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_iter-create.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/uid.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-assign.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/symbol/iterator.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/utils.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/document-create-element.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/transitions/collapse-transition.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_has.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/nonIterableSpread/index.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/engine-is-node.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_redefine.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/_babel-helper-vue-jsx-merge-props@2.0.3@babel-helper-vue-jsx-merge-props/index.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/shared.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/regexp-exec.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/scroll-into-view.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.repeat.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/iterator-close.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/add-to-unscopables.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_dom-create.js","webpack:///./node_modules/_qs@6.9.6@qs/lib/formats.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/ie8-dom-define.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/object/assign.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/checkbox.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/_v-viewer@1.6.4@v-viewer/dist/v-viewer.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_wks.js","webpack:///./node_modules/_node-libs-browser@2.2.1@node-libs-browser/mock/process.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/utils/util.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/a-function.js","webpack:///./node_modules/_element-ui@2.15.1@element-ui/lib/locale/index.js","webpack:///./node_modules/_three@0.117.1@three/examples/jsm/controls/DeviceOrientationControls.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.match.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.promise.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.iterator.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_array-includes.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_object-gpo.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/es6.symbol.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/is-forced.js","webpack:///./node_modules/_qs@6.9.6@qs/lib/parse.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.array.find-index.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_uid.js","webpack:///./node_modules/_@babel_runtime@7.13.7@@babel/runtime/helpers/arrayWithoutHoles/index.js","webpack:///./node_modules/_core-js@3.9.0@core-js/modules/es.string.starts-with.js","webpack:///./node_modules/_core-js@2.6.12@core-js/library/modules/_to-length.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/_axios@0.19.2@axios/lib/helpers/bind.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/to-absolute-index.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/iterators-core.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/function-bind-context.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/string-pad.js","webpack:///./node_modules/_core-js@3.9.0@core-js/internals/well-known-symbol-wrapped.js"],"names":["fixRegExpWellKnownSymbolLogic","anObject","requireObjectCoercible","sameValue","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","this","searcher","undefined","call","RegExp","String","res","done","value","rx","S","previousLastIndex","lastIndex","result","index","path","global","aFunction","variable","module","exports","namespace","method","arguments","length","_Group","_tweens","_tweensAddedDuringUpdate","prototype","getAll","Object","keys","map","t","bind","removeAll","add","getId","remove","update","n","e","TWEEN","now","i","r","_isPlaying","Group","_nextId","nextId","self","process","hrtime","performance","Date","getTime","Tween","_object","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_repeatDelayTime","_yoyo","_reversed","_delayTime","_startTime","_easingFunction","Easing","Linear","None","_interpolationFunction","Interpolation","_chainedTweens","_onStartCallback","_onStartCallbackFired","_onUpdateCallback","_onCompleteCallback","_onStopCallback","_group","_id","isPlaying","to","create","duration","start","parseFloat","Array","concat","stop","stopChainedTweens","end","group","delay","repeat","repeatDelay","yoyo","easing","interpolation","chain","onStart","onUpdate","onComplete","onStop","a","charAt","isFinite","s","o","u","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Math","cos","PI","sin","Exponential","pow","Circular","sqrt","Elastic","Back","Bounce","floor","Utils","Bezier","Bernstein","CatmullRom","Factorial","define","createNonEnumerableProperty","has","setGlobal","inspectSource","InternalStateModule","getInternalState","get","enforceInternalState","enforce","TEMPLATE","split","key","options","state","unsafe","simple","enumerable","noTargetGet","source","join","Function","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPrimitive","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","getOwnPropertyDescriptor","f","P","error","wrappedWellKnownSymbolModule","defineProperty","NAME","Symbol","Number","EPSILON","isInteger","sign","x","toString","match","assign","target","TypeError","output","nextKey","hasOwnProperty","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","FrontFaceDirectionCW","FrontFaceDirectionCCW","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","SmoothShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","Uncharted2ToneMapping","CineonToneMapping","ACESFilmicToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","SphericalReflectionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipMapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","ZeroStencilOp","KeepStencilOp","ReplaceStencilOp","IncrementStencilOp","DecrementStencilOp","IncrementWrapStencilOp","DecrementWrapStencilOp","InvertStencilOp","NeverStencilFunc","LessStencilFunc","EqualStencilFunc","LessEqualStencilFunc","GreaterStencilFunc","NotEqualStencilFunc","GreaterEqualStencilFunc","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","StreamDrawUsage","StaticReadUsage","DynamicReadUsage","StreamReadUsage","StaticCopyUsage","DynamicCopyUsage","StreamCopyUsage","EventDispatcher","addEventListener","type","listener","_listeners","listeners","indexOf","push","hasEventListener","removeEventListener","listenerArray","splice","dispatchEvent","event","array","slice","l","_lut","_canvas","MathUtils","DEG2RAD","RAD2DEG","generateUUID","d0","random","d1","d2","d3","uuid","toUpperCase","clamp","min","max","euclideanModulo","m","mapLinear","a1","a2","b1","b2","lerp","y","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","ceil","log","LN2","floorPowerOfTwo","setQuaternionFromProperEuler","q","b","c","order","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","set","console","warn","Vector2","Matrix3","elements","defineProperties","isVector2","setScalar","scalar","setX","setY","setComponent","Error","getComponent","clone","constructor","copy","v","w","addVectors","addScalar","addScaledVector","sub","subVectors","subScalar","multiply","multiplyScalar","divide","divideScalar","applyMatrix3","clampScalar","minVal","maxVal","clampLength","round","roundToZero","negate","dot","cross","lengthSq","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","g","h","getInverse","matrix","throwOnDegenerate","t11","t12","t13","det","detInv","transpose","tmp","getNormalMatrix","matrix4","transposeIntoArray","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","name","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","internalFormat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","Vector4","z","WebGLRenderTarget","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","Quaternion","_x","_y","_z","_w","isTexture","updateMatrix","toJSON","meta","isRootObject","textures","metadata","generator","wrap","images","url","isArray","dispose","transformUv","uv","isVector4","setZ","setW","applyMatrix4","setAxisAngleFromQuaternion","acos","setAxisAngleFromRotationMatrix","epsilon","epsilon2","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","isEuler","c1","c3","s1","s3","setFromAxisAngle","axis","halfAngle","setFromRotationMatrix","trace","setFromUnitVectors","vFrom","vTo","EPS","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","onRotationChange","onQuaternionChange","configurable","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","attach","getObjectById","id","getObjectByProperty","getObjectByName","child","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","data","recursive","parse","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","clampedPoint","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","intersectsLine","startSign","endSign","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","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","exec","components","parseInt","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","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","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","attribute1","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","array2","geometry2","newAttribute","morphArray","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","intersects","groupMaterial","faceIndex","fvA","fvB","fvC","isMultiMaterial","fl","faceMaterial","uvs_f","_geometryId","_m1$3","_obj$1","_offset$1","Geometry","vertex","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","precisionPoints","faceIndicesToRemove","idx","diff","sortFacesByMaterialIndex","materialIndexSort","sort","newUvs1","newUvs2","uvs1","normalsHash","colorsHash","uvsHash","hasMaterial","hasFaceUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","srcVertexNormal","destVertexNormal","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","super","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","property","mergeUniforms","uniforms","merged","UniformsUtils","default_vertex","default_fragment","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","uniform","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","offsetX","offsetY","clearViewOffset","skew","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","render","clear","stencil","WebGLCubeRenderTarget","dummy","DataTexture","fromEquirectangularTexture","shader","tEquirect","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","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","createBuffer","bufferType","buffer","bindBuffer","bufferData","bytesPerElement","BYTES_PER_ELEMENT","updateBuffer","bufferSubData","subarray","isInterleavedBufferAttribute","deleteBuffer","delete","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","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_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","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","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","ShaderChunk","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","renderList","forceClear","session","getSession","environmentBlendMode","setClear","autoClear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","toneMapping","unshift","getClearColor","setClearColor","getClearAlpha","setClearAlpha","WebGLBufferRenderer","info","mode","setMode","drawArrays","renderInstances","primcount","extension","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","_bufferGeometry","geometryAttributes","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","instanceCount","reset","programs","autoReset","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","getSingularSetter","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","getPureArraySetter","SingleUniform","activeInfo","PureArrayUniform","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","pathLength","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","addLineNumbers","getEncodingComponents","getShaderErrors","status","getShaderParameter","getShaderInfoLog","trim","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","generateExtensions","chunks","extensionDerivatives","envMapCubeUV","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filter","filterEmptyLine","generateDefines","fetchAttributeLocations","getActiveAttrib","getAttribLocation","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","generateShadowMapTypeDefine","shadowMapTypeDefine","shadowMapType","generateEnvMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","WebGLProgram","cacheKey","prefixVertex","prefixFragment","gammaFactorDefine","customExtensions","customDefines","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","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","deleteShader","getAttributes","destroy","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getShaderObject","shaderobject","allocateBones","skeleton","bones","nVertexUniforms","nVertexMatrices","getTextureEncodingFromMap","getParameters","shadows","nClipPlanes","nClipIntersection","isMeshStandardMaterial","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","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","onSceneDispose","list","cameras","UniformsCache","light","halfWidth","halfHeight","ShadowUniformsCache","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","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","pushLight","pushShadow","shadowLight","setupLights","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","vsm_frag","vsm_vert","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","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","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","colorBuffer","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","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","stride","vertexAttribIPointer","useProgram","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","setMaterial","frontFaceCW","setPolygonOffset","frontFace","cullFace","setLineWidth","lineWidth","factor","activeTexture","webglSlot","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","apply","texImage3D","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","OffscreenCanvas","err","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","textureProperties","__maxMipLevel","LOG2E","getInternalFormat","internalFormatName","glFormat","glType","filterFallback","onTextureDispose","deallocateTexture","isVideoTexture","onRenderTargetDispose","deallocateRenderTarget","__webglInit","deleteTexture","__webglTexture","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","textureUnits","resetTextureUnits","textureUnit","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","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthTexture","isCube","webglDepthTexture","setupDepthRenderbuffer","createRenderbuffer","setupRenderTarget","createFramebuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","warnedTexture2D","warnedTextureCube","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","WebXRController","_targetRay","_grip","WebXRManager","framebufferScaleFactor","referenceSpace","referenceSpaceType","pose","controllers","inputSourcesMap","Map","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","inputSource","onSessionEnd","forEach","disconnect","setFramebuffer","animation","isPresenting","onRequestReferenceSpace","updateInputSources","inputSources","removed","added","getController","getTargetRaySpace","getControllerGrip","getGripSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","setSession","getContextAttributes","xrCompatible","makeXRCompatible","layerInit","antialias","baseLayer","XRWebGLLayer","updateRenderState","requestReferenceSpace","then","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","getCamera","depthNear","depthFar","onAnimationFrameCallback","getViewerPose","views","cameraVRNeedsUpdate","transform","WebGLMaterials","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","refreshUniformsCommon","isMeshLambertMaterial","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","refreshUniformsStandard","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","uvScaleMap","uv2ScaleMap","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","onContextLost","onContextRestore","message","initGLContext","preventDefault","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReference","programInfo","renderObjectImmediate","renderBufferImmediate","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","setTransparentSort","bits","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","normalArray","uvArray","colorArray","tempScene","setupVertexAttributes","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","geometryAttribute","isInstancedInterleavedBuffer","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setProgram","updateBuffers","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","compiled","material2","initMaterial","projectObject","isGroup","isLOD","isImmediateRenderObject","renderObjects","isArrayCamera","camera2","materialProperties","lightsStateVersion","programCacheKey","programChange","numSupportedMorphTargets","numSupportedMorphNormals","needsLights","materialNeedsLights","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","isOrthographicCamera","boneTexture","boneMatrices","boneTextureSize","markUniformsLightsNeedsUpdate","ltc_1","LTC_1","ltc_2","LTC_2","window","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","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","float32Array","transformVertex","vertexPosition","mvPosition","_v1$4","_v2$2","LOD","_currentLevel","levels","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","addLevel","getCurrentLevel","getObjectForDistance","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","distSq","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","ol","edge1","edge2","edge","edges","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","pu","pv","sliceCount","PolyhedronGeometry","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivide","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","applyRadius","generateUVs","azimuth","inclination","correctUVs","correctSeam","centroid","uvA","uvB","uvC","azi","correctUV","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","generateBufferData","generateSegment","generateIndices","getPointAt","N","B","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","readyState","HAVE_CURRENT_DATA","isCanvasTexture","Earcut","triangulate","holeIndices","dim","invSize","hasHoles","outerLen","outerNode","linkedList","prev","eliminateHoles","earcutLinked","clockwise","last","signedArea","insertNode","removeNode","filterPoints","again","steiner","area","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","zOrder","prevZ","nextZ","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","mx","my","tanMin","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","px","py","intersectsPolygon","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","inside","Node","an","bp","sum","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","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","ptNextShift_x","ptNextShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","buildLidFaces","layer","f3","buildSideFaces","layeroffset","sidewalls","sl","slen1","slen2","f4","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","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","generateTorso","slope","indexRow","sinTheta","cosTheta","generateCap","centerIndexStart","centerIndexEnd","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","freeze","__proto__","RawShaderMaterial","Materials","AnimationUtils","arraySlice","from","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","compareTime","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","referenceQuat","numTimes","valueStart","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","getTrackTypeForValueTypeName","typeName","toLowerCase","parseKeyframeTrack","json","trackType","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","timeNext","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","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","DefaultLoadingManager","Loader","manager","crossOrigin","resourcePath","requestHeader","load","loadAsync","Promise","resolve","reject","setCrossOrigin","setPath","setResourcePath","setRequestHeader","loading","FileLoader","AnimationLoader","CompressedTextureLoader","DataTextureLoader","ImageLoader","CubeTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","t3","cached","setTimeout","dataUriRegex","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","request","XMLHttpRequest","header","open","callbacks","withCredentials","overrideMimeType","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","lengthAfter","segmentLength","segmentFraction","getTangent","pt1","pt2","getTangentAt","mat","MAX_VALUE","tz","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","CatmullRomCurve3","curveType","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","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","lens","cacheLengths","sums","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","npts","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","bufferAttributeConstr","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","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","Font","createPaths","chars","line_height","yMax","yMin","underlineThickness","paths","char","ret","createPath","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","action","ha","familyName","FontLoader","setOptions","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","substring","AudioContext","webkitAudioContext","AudioLoader","HemisphereLightProbe","sky","ground","AmbientLightProbe","bufferCopy","decodeAudioData","audioBuffer","isHemisphereLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","eyeSep","_cache","Clock","autoStart","oldTime","elapsedTime","running","xmin","xmax","eyeSepHalf","eyeSepOnProjection","ymax","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","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","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","pause","getFilters","setFilters","getDetune","getPlaybackRate","getLoop","setLoop","setLoopStart","setLoopEnd","getVolume","setVolume","_position$3","_quaternion$4","_scale$2","_orientation$1","PositionalAudio","panner","createPanner","panningModel","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","setDirectionalCone","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","getFrequencyData","getByteFrequencyData","getAverageFrequency","accumulate","accuIndex","currentWeight","mix","accumulateAdditive","weightAdditive","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","endIndex","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","node","findNode","nodeName","AnimationObjectGroup","nCachedObjects_","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","AnimationMixer","root","_root","_initMemoryManager","_accuIndex","Uniform","InstancedInterleavedBuffer","Raycaster","PointCloud","ascSort","intersectObject","Spherical","Cylindrical","firstValidIndex","bindings","unbind","isAnimationObjectGroup","sanitizeNodeName","matches","results","objectName","objectIndex","propertyIndex","lastDot","searchNodeSubtree","childNode","subTreeNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","resolvedProperty","SetterByBindingTypeAndVersioning","targetObject","dest","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","lastBindingsPath","_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","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","startEnd_startP","_vector$8","SpotLightHelper","cone","coneLength","coneWidth","_vector$9","_boneMatrix","_matrixWorldInv","getBoneList","boneList","SkeletonHelper","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","positions2","_lineGeometry","_coneGeometry","_axis","ArrowHelper","headLength","headWidth","setDirection","AxesHelper","setColor","LOD_MIN","LOD_MAX","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","MAX_SAMPLES","ENCODINGS","_flatCamera","_lodPlanes","_sizeLods","_sigmas","_createPlanes","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_pingPongRenderTarget","_blurMaterial","_getBlurShader","_equirectShader","_cubemapShader","_compileMaterial","_isLDR","lod","sizeLod","sigma","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","fill","_createRenderTarget","cubeUVRenderTarget","_setViewport","weights","poleAxis","shaderMaterial","_getCommonVertexShader","_getEncodings","_getEquirectShader","_getCubemapShader","Face4","fromScene","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","fromEquirectangular","equirectangular","fromCubemap","cubemap","_textureToCubeUV","compileCubemapShader","compileEquirectangularShader","outputTarget","tmpMesh","cubeCamera","upSign","forwardSign","maxComponent","fExp","log2","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","exp","outputSize","LineStrip","LinePieces","NoColors","FaceColors","VertexColors","MeshFaceMaterial","MultiMaterial","Particle","ParticleSystem","PointCloudMaterial","ParticleBasicMaterial","ParticleSystemMaterial","Vertex","DynamicBufferAttribute","Int8Attribute","Uint8Attribute","Uint8ClampedAttribute","Int16Attribute","Uint16Attribute","Int32Attribute","Uint32Attribute","Float32Attribute","Float64Attribute","ClosedSplineCurve3","SplineCurve3","Spline","AxisHelper","BoundingBoxHelper","EdgesHelper","WireframeHelper","XHRLoader","BinaryTextureLoader","WebGLRenderTargetCube","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","Handlers","setTexturePath","empty","isIntersectionBox","isIntersectionSphere","setFromMatrix","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","barycoordFromPoint","midpoint","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","applyMatrix","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","computeOffsets","removeAttribute","maxInstancedCount","linePrecision","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","renderReverseSided","renderSingleSided","audioLoader","getData","updateCubeMap","GeometryUtils","geometry1","CanvasRenderer","JSONLoader","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","LensFlare","revision","userAgent","toLength","toInteger","advanceStringIndex","getSubstitution","maybeToString","it","REPLACE","nativeReplace","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","fullUnicode","unicode","matchStr","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","shared","uid","headers","fns","fn","encode","val","encodeURIComponent","paramsSerializer","serializedParams","isURLSearchParams","isDate","toISOString","isObject","hashmarkIndex","MapShim","arr","some","entry","class_1","__entries__","entries","ctx","_i","_a","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","throttle","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","REFRESH_DELAY","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","observer","connect_","removeObserver","observers","disconnect_","changesDetected","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","childList","characterData","subtree","_b","isReflowProperty","getInstance","instance_","defineConfigurable","props","writable","getWindowOf","ownerGlobal","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","styles","reduce","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getBBox","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","documentElement","getContentRect","createReadOnlyRect","Constr","DOMRectReadOnly","rect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","ResizeObserver","DRACOLoader","decoderPath","decoderConfig","decoderBinary","decoderPending","workerLimit","workerPool","workerNextTaskID","workerSourceURL","defaultAttributeIDs","defaultAttributeTypes","setDecoderPath","setDecoderConfig","config","setWorkerLimit","setVerbosity","setSkipDequantization","taskConfig","attributeIDs","attributeTypes","useUniqueIDs","decodeGeometry","decodeDracoFile","worker","taskKey","taskCache","cachedTask","promise","byteLength","taskID","taskCost","geometryPending","_getWorker","_worker","_callbacks","postMessage","_createGeometry","_releaseTask","geometryData","_loadLibrary","preload","_initDecoder","useJS","WebAssembly","librariesPending","all","libraries","jsContent","wasmBinary","DRACOWorker","body","URL","createObjectURL","Worker","_taskCosts","_taskLoad","onmessage","terminate","draco","decoder","decoderBuffer","dracoGeometry","decodingStatus","geometryType","GetEncodedGeometryType","TRIANGULAR_MESH","DecodeBufferToMesh","POINT_CLOUD","DecodeBufferToPointCloud","ok","ptr","error_msg","attributeName","attributeID","attributeType","GetAttributeByUniqueId","GetAttributeId","GetAttribute","decodeAttribute","numFaces","num_faces","numIndices","DracoInt32Array","GetFaceFromMesh","GetValue","dracoArray","numComponents","num_components","numPoints","num_points","numValues","DracoFloat32Array","GetAttributeFloatForAllPoints","DracoInt8Array","GetAttributeInt8ForAllPoints","DracoInt16Array","GetAttributeInt16ForAllPoints","GetAttributeInt32ForAllPoints","DracoUInt8Array","GetAttributeUInt8ForAllPoints","DracoUInt16Array","GetAttributeUInt16ForAllPoints","DracoUInt32Array","GetAttributeUInt32ForAllPoints","onModuleLoaded","DracoDecoderModule","Decoder","DecoderBuffer","Init","attr","releaseDecoderModule","getDecoderModule","Cancel","__CANCEL__","$keys","hiddenKeys","getOwnPropertyNames","defineWellKnownSymbol","activeXDocument","enumBugKeys","html","documentCreateElement","sharedKey","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","display","appendChild","contentWindow","F","NullProtoObject","domain","ActiveXObject","Properties","getBuiltIn","IndexedObject","toObject","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","$this","callbackfn","that","specificCreate","boundFunction","every","findIndex","filterOut","ignoreDuplicateOf","parsed","Constructor","classof","wellKnownSymbol","MATCH","isRegExp","dP","createDesc","propertyIsEnumerable","__esModule","default","el","colorpicker","confirm","datepicker","today","cancel","selectDate","selectTime","startDate","endDate","prevYear","nextYear","prevMonth","nextMonth","year","month1","month2","month3","month4","month5","month6","month7","month8","month9","month10","month11","month12","weeks","sun","mon","tue","wed","thu","fri","sat","months","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","select","noMatch","noData","cascader","pagination","goto","pagesize","pageClassifier","messagebox","title","deleteTip","preview","continue","table","emptyText","confirmFilter","resetFilter","clearFilter","sumText","tree","transfer","titles","filterPlaceholder","noCheckedFormat","hasCheckedFormat","pageHeader","popconfirm","confirmButtonText","cancelButtonText","CancelToken","executor","resolvePromise","token","throwIfRequested","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertySymbols","definePropertyModule","SPECIES","CONSTRUCTOR_NAME","modules","installedModules","__webpack_require__","moduleId","getter","toStringTag","ns","__webpack_exports__","normalizeComponent","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","10","12","14","16","17","21","22","3","31","33","_vm","_h","$createElement","_c","_self","directives","rawName","expression","staticClass","class","selected","itemSelected","disabled","groupDisabled","limitReached","hover","on","mouseenter","hoverItem","click","$event","stopPropagation","selectOptionClick","_t","_v","_s","currentLabel","_withStripped","emitter_","emitter_default","util_","_typeof","iterator","obj","optionvue_type_script_lang_js_","mixins","componentName","inject","required","label","created","Boolean","hitState","computed","multiple","contains","isEqual","multipleLimit","watch","remote","dispatch","oldVal","valueKey","methods","item","handleGroupDisabled","hoverIndex","queryChange","query","filteredOptionsCount","cachedOptions","optionsCount","$on","beforeDestroy","_select2","selectedOptions","selectedIndex","onOptionDestroy","src_optionvue_type_script_lang_js_","componentNormalizer","component","__file","37","4","5","6","61","handleClose","selectSize","toggleMenu","ref","inputWidth","collapseTags","attrs","closable","selectDisabled","collapseTagSize","hit","deleteTag","_e","resetInputHeight","_l","getValueKey","filterable","inputLength","autocomplete","autoComplete","domProps","handleFocus","blur","softFocus","keyup","managePlaceholder","keydown","resetInputState","_k","keyCode","navigateOptions","selectOption","deletePrevTag","compositionstart","handleComposition","compositionupdate","compositionend","input","composing","debouncedQueryChange","currentPlaceholder","readonly","tabindex","handleBlur","nativeOn","debouncedOnInputChange","paste","inputHovering","mouseleave","model","selectedLabel","$$v","$slots","showClose","iconClass","handleClearClick","handleMenuEnter","doDestroy","popperAppendToBody","allowCreate","tag","showNewOption","focus_","focus_default","locale_","locale_default","input_","input_default","select_dropdownvue_type_template_id_06828748_render","$parent","popperClass","minWidth","select_dropdownvue_type_template_id_06828748_staticRenderFns","vue_popper_","vue_popper_default","select_dropdownvue_type_script_lang_js_","placement","boundariesPadding","popperOptions","gpuAcceleration","visibleArrow","appendToBody","$el","getBoundingClientRect","mounted","referenceElm","$refs","reference","popperElm","updatePopper","destroyPopper","src_select_dropdownvue_type_script_lang_js_","select_dropdown","src_option","tag_","tag_default","scrollbar_","scrollbar_default","debounce_","debounce_default","clickoutside_","clickoutside_default","resize_event_","scroll_into_view_","scroll_into_view_default","navigation_mixin","hoverOption","optionsAllDisabled","option","_this2","$nextTick","scrollToOption","shared_","selectvue_type_script_lang_js_","elForm","elFormItem","provide","_elFormItemSize","elFormItemSize","hasValue","criteria","clearable","debounce","loadingText","noMatchText","noDataText","hasExistingOption","$ELEMENT","propPlaceholder","ElInput","ElSelectMenu","ElOption","ElTag","ElScrollbar","Clickoutside","validator","automaticDropdown","remoteMethod","filterMethod","defaultFirstOption","reserveKeyword","createdLabel","createdSelected","initialInputHeight","cachedPlaceHolder","previousQuery","menuVisibleOnFocus","isOnComposition","isSilentBlur","handleQueryChange","setSelected","_this3","broadcast","resetHoverIndex","$emit","_this4","$isServer","inputs","querySelectorAll","activeElement","checkDefaultFirstOption","_this5","_","lastCharacter","_this6","popper","menu","querySelector","scrollbar","handleScroll","_this7","emitChange","getOption","isNull","isUndefined","cachedOption","newOption","_this8","_this9","deleteSelected","toggleLastOptionHitState","_this10","inputChildNodes","childNodes","tagName","tags","sizeInMap","_this11","handleOptionSelect","byClick","_this12","optionIndex","getValueIndex","setSoftFocus","onInputChange","resetInputWidth","handleResize","hasCreated","_this13","_this14","sizeMap","medium","small","mini","src_selectvue_type_script_lang_js_","select_component","src_select","install","Vue","116","border","radioSize","isDisabled","role","tabIndex","checked","_q","change","handleChange","radiovue_type_script_lang_js_","_radioGroup","radio","temRadioSize","radioGroupSize","src_radiovue_type_script_lang_js_","src_radio","defined","TO_STRING","pos","IS_PURE","store","copyright","NATIVE_WEAK_MAP","objectHas","getterFor","wmget","wmhas","wmset","facade","STATE","fails","objectKeys","nativeAssign","A","symbol","alphabet","chr","argumentsLength","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","C","mapfn","iteratorMethod","createError","validateStatus","redefine","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","sham","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","nativeMethod","str","arg2","forceStringMethod","stringMethod","regexMethod","arg","_defineProperty","_extends","_objectSpread","ownKeys","sym","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arr2","iter","navigator","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","off","selector","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","nodeType","parentNode","closest","includeCTX","_throttleTimeout","R_SPACE","toggleClass","classList","className","css","prop","currentStyle","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","getElementsByTagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","innerHeight","innerWidth","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","Sortable","ghost","dragged","draggable","lastChild","lastElementChild","previousElementSibling","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","indexOfObject","includeSelf","elem","gotSelf","scrollWidth","scrollHeight","elemCSS","overflowX","overflowY","extend","isRectEqual","rect1","rect2","ms","args","cancelThrottle","clearTimeout","scrollBy","Polymer","$","jQuery","Zepto","dom","cloneNode","setRect","unsetRect","expando","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animationResetTimer","currentRect","animatingX","animatingY","repaint","animated","offsetWidth","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","pluginEvent","eventName","sortable","evt","eventCanceled","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","createEvent","initEvent","bubbles","cancelable","pullMode","lastPutMode","allEventProperties","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","emptyInsertThreshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_globalDragOver","dropEffect","_onMove","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_ghostIsLast","spacer","_getSwapDirection","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_generateId","href","_saveInputCheckedState","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","composedPath","button","isContentEditable","_prepareDragStart","dragStartFn","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","selection","getSelection","removeAllRanges","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","inserted","ghostMatrix","relativeScrollOffset","cssMatrix","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","dragIndex","nextElementSibling","after","moveVector","extra","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","items","is","nextTick","cancelNextTick","detectDirection","_len","_key","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","AutoScrollPlugin","AutoScroll","scroll","scrollSensitivity","scrollSpeed","bubbleScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","_ref2","dragOverBubble","drop","clearPointerElemChangedInterval","clearAutoScrolls","nulling","autoScroll","ogElemScroller","newElem","pid","lastSwapEl","isFallback","scrollCustomFn","sens","speed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","toSortable","changedTouches","onSpill","Revert","Remove","SwapPlugin","Swap","swapClass","dragStart","dragOverValid","swap","prevSwapEl","_ref3","swapNodes","swapItem","isEqualNode","_ref4","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","MultiDragPlugin","MultiDrag","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragElement","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","sortableIndex","insertMultiDragClones","showClone","hideClone","_ref5","dragStartGlobal","_ref6","multiDrag","_ref7","removeMultiDragElements","dragOver","_ref8","_ref9","insertMultiDragElements","_ref10","dragRectAbsolute","clonesHiddenBefore","dragOverAnimationCapture","_ref11","dragMatrix","dragOverAnimationComplete","_ref12","originalEvt","shiftKey","currentIndex","multiDragIndex","nullingGlobal","destroyGlobal","deselect","oldIndicies","newIndicies","clones","clonesInserted","elementsInserted","NativePromise","speciesConstructor","promiseResolve","NON_GENERIC","proto","real","forced","onFinally","isFunction","_locale","names","argument","nativeGetOwnPropertyNames","windowNames","getWindowNames","pagervue_type_template_id_7274f267_render","onPagerClick","pageCount","currentPage","showPrevMore","quickprevIconClass","onMouseenter","pagers","pager","showNextMore","quicknextIconClass","pagervue_type_script_lang_js_","pagerCount","newPage","pagerCountOffset","halfPagerCount","startPage","_i2","_i3","src_pagervue_type_script_lang_js_","select_","select_default","option_","option_default","pageSize","layout","pageSizes","prevText","nextText","hideOnSinglePage","internalCurrentPage","internalPageSize","lastEmittedPage","userChangePageSize","internalPageCount","template","TEMPLATE_MAP","jumper","handleCurrentChange","sizes","rightWrapper","haveRightWrapper","compo","Prev","Next","Sizes","immediate","handler","newVal","ElSelect","Jumper","userInput","handleKeyup","handleInput","getValidCurrentPage","Total","Pager","havePageCount","resetValue","oldPage","packages_pagination","componentvue_type_template_id_60140e62_render","afterEnter","afterLeave","currentTarget","handleWrapperClick","fullscreen","customClass","rendered","footer","componentvue_type_template_id_60140e62_staticRenderFns","popup_","popup_default","migrating_","migrating_default","componentvue_type_script_lang_js_","modal","modalAppendToBody","lockScroll","closeOnClickModal","closeOnPressEscape","beforeClose","destroyOnClose","dialog","marginTop","getMigratingConfig","hide","destroyed","src_componentvue_type_script_lang_js_","component_component","src_component","autocompletevue_type_template_id_152f2ee6_render","suggestionVisible","handleClear","highlight","highlightedIndex","handleKeyEnter","$props","$attrs","prepend","append","suffix","suggestions","highlighted","autocompletevue_type_template_id_152f2ee6_staticRenderFns","autocomplete_suggestionsvue_type_template_id_cd10dcf0_render","showPopper","hideLoading","dropdownWidth","autocomplete_suggestionsvue_type_template_id_cd10dcf0_staticRenderFns","autocomplete_suggestionsvue_type_script_lang_js_","updated","popperJS","textarea","referenceList","src_autocomplete_suggestionsvue_type_script_lang_js_","autocomplete_suggestions_component","autocomplete_suggestions","autocompletevue_type_script_lang_js_","inheritAttrs","ElAutocompleteSuggestions","maxlength","minlength","autofocus","fetchSuggestions","triggerOnFocus","customItem","selectWhenUnmatched","prefixIcon","suffixIcon","highlightFirstItem","activated","suggestionDisabled","isValidData","$input","queryString","debouncedGetData","suggestion","suggestionList","highlightItem","$destroy","src_autocompletevue_type_script_lang_js_","autocomplete_component","dropdown_render","dropdown_staticRenderFns","packages_autocomplete","button_","button_default","button_group_","button_group_default","dropdownvue_type_script_lang_js_","ElButton","ElButtonGroup","dropdown","trigger","splitButton","hideOnClick","showTimeout","hideTimeout","timeout","triggerElm","menuItems","menuItemsArray","dropdownElm","focusing","listId","dropdownSize","handleMenuItemClick","selfDefine","show","removeTabindex","resetTabindex","handleClick","handleTriggerKeyDown","ev","handleItemKeyDown","triggerElmFocus","ele","initAria","elm","command","instance","initDomOperation","handleMainButtonClick","src_dropdownvue_type_script_lang_js_","dropdown_component","packages_dropdown","dropdown_menuvue_type_template_id_0da6b714_render","dropdown_menuvue_type_template_id_0da6b714_staticRenderFns","dropdown_menuvue_type_script_lang_js_","arrowOffset","currentPlacement","src_dropdown_menuvue_type_script_lang_js_","dropdown_menu_component","dropdown_menu","packages_dropdown_menu","dropdown_itemvue_type_template_id_6359102a_render","divided","icon","dropdown_itemvue_type_template_id_6359102a_staticRenderFns","dropdown_itemvue_type_script_lang_js_","src_dropdown_itemvue_type_script_lang_js_","dropdown_item_component","dropdown_item","packages_dropdown_item","aria","focusFirstDescendant","attemptFocus","focusLastDescendant","isFocusable","IgnoreUtilFocusChanges","rel","triggerEvent","opts","fireEvent","tab","enter","space","down","esc","aria_utils","SubMenu","domNode","subMenuItems","subIndex","addListeners","gotoSubIndex","prevDef","aria_submenu","MenuItem","submenu","menuChild","aria_menuitem","Menu","menuChildren","menu_render","menu_staticRenderFns","aria_menubar","dom_","menuvue_type_script_lang_js_","collapse","backgroundColor","collapseTransition","rootMenu","beforeEnter","beforeLeave","dataset","oldOverflow","overflow","leave","defaultActive","defaultOpeneds","uniqueOpened","router","menuTrigger","textColor","activeTextColor","activeIndex","openedMenus","submenus","hoverBackground","mixColor","isMenuPopup","updateActiveIndex","initOpenedMenu","getColorChannels","red","green","blue","percent","_getColorChannels","addItem","$set","removeItem","addSubmenu","removeSubmenu","openMenu","indexPath","closeMenu","handleSubmenuClick","isOpened","handleItemClick","oldActiveIndex","hasIndex","routeToItem","activeItem","route","$router","$watch","src_menuvue_type_script_lang_js_","menu_component","src_menu","submenu_render","submenu_staticRenderFns","packages_menu","collapse_transition_","collapse_transition_default","menu_mixin","parentMenu","paddingStyle","padding","poperMixins","transformOrigin","deactivated","submenuvue_type_script_lang_js_","ElCollapseTransition","mouseInChild","opened","isFirstLevel","menuTransitionName","titleStyle","borderBottomColor","handleCollapseToggle","initPopper","handleMouseenter","relatedTarget","MouseEvent","handleMouseleave","deepDispatch","handleTitleMouseenter","handleTitleMouseleave","updatePlacement","popupMenu","inlineMenu","submenuTitleIcon","src_submenuvue_type_script_lang_js_","submenu_component","packages_submenu","menu_itemvue_type_template_id_2a5dbfea_render","itemStyle","onMouseEnter","onMouseLeave","effect","staticStyle","menu_itemvue_type_template_id_2a5dbfea_staticRenderFns","tooltip_","tooltip_default","menu_itemvue_type_script_lang_js_","ElTooltip","isNested","src_menu_itemvue_type_script_lang_js_","menu_item_component","menu_item","packages_menu_item","menu_item_groupvue_type_template_id_543b7bdc_render","levelPadding","menu_item_groupvue_type_template_id_543b7bdc_staticRenderFns","menu_item_groupvue_type_script_lang_js_","src_menu_item_groupvue_type_script_lang_js_","menu_item_group_component","menu_item_group","packages_menu_item_group","inputvue_type_template_id_343dd774_render","inputSize","inputDisabled","inputExceed","showPassword","hovering","passwordVisible","handleCompositionStart","handleCompositionUpdate","handleCompositionEnd","getSuffixVisible","showClear","showPwdVisible","isWordLimitVisible","mousedown","handlePasswordVisible","textLength","upperLimit","validateState","validateIcon","textareaStyle","inputvue_type_template_id_343dd774_staticRenderFns","hiddenTextarea","HIDDEN_STYLE","CONTEXT_STYLE","calculateNodeStyling","targetElement","getPropertyValue","paddingSize","borderSize","contextStyle","calcTextareaHeight","minRows","maxRows","_calculateNodeStyling","singleRowHeight","minHeight","maxHeight","merge_","merge_default","inputvue_type_script_lang_js_","textareaCalcStyle","focused","isComposing","resize","form","autosize","validateEvent","showWordLimit","needStatusIcon","statusIcon","validating","success","nativeInputValue","resizeTextarea","setNativeInputValue","updateIconOffset","events","calcIconOffset","place","elList","pendantMap","pendant","src_inputvue_type_script_lang_js_","input_component","src_input","packages_input","input_numbervue_type_template_id_42f8cf66_render","inputNumberSize","inputNumberDisabled","controls","controlsAtRight","dragstart","decrease","minDisabled","increase","maxDisabled","displayValue","handleInputChange","input_numbervue_type_template_id_42f8cf66_staticRenderFns","repeat_click","vnode","interval","input_numbervue_type_script_lang_js_","repeatClick","stepStrictly","controlsPosition","stepPrecision","precisionFactor","toPrecision","_decrease","_increase","numPrecision","toFixed","valueString","dotPosition","setCurrentValue","innerInput","src_input_numbervue_type_script_lang_js_","input_number_component","input_number","packages_input_number","radiovue_type_template_id_69cd6268_render","radiovue_type_template_id_69cd6268_staticRenderFns","radio_component","packages_radio","radio_groupvue_type_template_id_818a704c_render","_elTag","handleKeydown","radio_groupvue_type_template_id_818a704c_staticRenderFns","UP","DOWN","radio_groupvue_type_script_lang_js_","radios","firstLabel","roleRadios","_value","src_radio_groupvue_type_script_lang_js_","radio_group_component","radio_group","packages_radio_group","radio_buttonvue_type_template_id_18a77a32_render","activeStyle","radio_buttonvue_type_template_id_18a77a32_staticRenderFns","radio_buttonvue_type_script_lang_js_","borderColor","boxShadow","src_radio_buttonvue_type_script_lang_js_","radio_button_component","radio_button","packages_radio_button","checkboxvue_type_template_id_d0387074_render","checkboxSize","isChecked","indeterminate","trueLabel","falseLabel","$$a","$$el","$$c","$$i","checkboxvue_type_template_id_d0387074_staticRenderFns","checkboxvue_type_script_lang_js_","selfModel","isLimitExceeded","_checkboxGroup","isLimitDisabled","temCheckboxSize","checkboxGroupSize","addToStore","src_checkboxvue_type_script_lang_js_","checkbox_component","src_checkbox","packages_checkbox","checkbox_buttonvue_type_template_id_478e906e_render","checkbox_buttonvue_type_template_id_478e906e_staticRenderFns","checkbox_buttonvue_type_script_lang_js_","_checkboxGroup2","src_checkbox_buttonvue_type_script_lang_js_","checkbox_button_component","checkbox_button","packages_checkbox_button","checkbox_groupvue_type_template_id_7289a290_render","checkbox_groupvue_type_template_id_7289a290_staticRenderFns","checkbox_groupvue_type_script_lang_js_","src_checkbox_groupvue_type_script_lang_js_","checkbox_group_component","checkbox_group","packages_checkbox_group","componentvue_type_template_id_2dcd8fbb_render","switchDisabled","switchValue","activeValue","inactiveValue","inactiveIconClass","inactiveText","coreWidth","activeIconClass","activeText","componentvue_type_template_id_2dcd8fbb_staticRenderFns","switch_src_componentvue_type_script_lang_js_","activeColor","inactiveColor","setBackgroundColor","newColor","core","packages_switch_src_componentvue_type_script_lang_js_","src_component_component","switch_src_component","packages_switch","selectvue_type_template_id_0e4aade6_render","selectvue_type_template_id_0e4aade6_staticRenderFns","select_dropdown_component","optionvue_type_template_id_7a44c642_render","optionvue_type_template_id_7a44c642_staticRenderFns","option_component","packages_select","packages_option","option_groupvue_type_template_id_6685e5de_render","option_groupvue_type_template_id_6685e5de_staticRenderFns","option_groupvue_type_script_lang_js_","$children","src_option_groupvue_type_script_lang_js_","option_group_component","option_group","packages_option_group","buttonvue_type_template_id_ca859fb4_render","buttonSize","buttonDisabled","plain","circle","nativeType","buttonvue_type_template_id_ca859fb4_staticRenderFns","buttonvue_type_script_lang_js_","src_buttonvue_type_script_lang_js_","button_component","src_button","packages_button","button_groupvue_type_template_id_3d8661d0_render","button_groupvue_type_template_id_3d8661d0_staticRenderFns","button_groupvue_type_script_lang_js_","src_button_groupvue_type_script_lang_js_","button_group_component","button_group","packages_button_group","tablevue_type_template_id_493fe34e_render","fit","stripe","isHidden","scrollX","scrollY","states","isComplex","tableSize","handleMouseLeave","showHeader","handleHeaderFooterMousewheel","bodyWidth","defaultSort","scrollPosition","bodyHeight","rowClassName","rowStyle","highlightCurrentRow","emptyBlockStyle","showSummary","summaryMethod","fixedColumns","handleFixedMousewheel","fixedWidth","fixedHeight","fixed","headerHeight","fixedBodyHeight","appendHeight","rightFixedColumns","rightFixedWidth","gutterWidth","resizeProxyVisible","tablevue_type_template_id_493fe34e_staticRenderFns","checkbox_","checkbox_default","external_throttle_debounce_","external_normalize_wheel_","external_normalize_wheel_default","isFirefox","mousewheel_mousewheel","directives_mousewheel","external_vue_","external_vue_default","util_typeof","getCell","cell","util_isObject","util_orderBy","sortKey","sortMethod","sortBy","getKey","$value","compare","getColumnById","columnId","column","columns","getColumnByKey","columnKey","getColumnByCell","getRowIdentity","row","rowKey","getKeysMap","arrayMap","hasOwn","mergeOptions","parseWidth","parseMinWidth","parseHeight","funcs","toggleRowStatus","statusArr","included","addRow","removeRow","walkTreeNode","childrenKey","lazyKey","isNil","_walker","expand","defaultExpandAll","expandRows","updateExpandRows","_states","_states$data","expandRowsMap","rowId","rowInfo","toggleRowExpansion","expanded","scheduleLayout","setExpandRowKeys","rowKeys","assertRowKey","_states2","keysMap","cur","isRowExpanded","_states3","_states3$expandRows","expandMap","_currentRowKey","currentRow","setCurrentRowKey","setCurrentRowByKey","restoreCurrentRowKey","updateCurrentRow","oldCurrentRow","updateCurrentRowData","currentRowKey","expandRowKeys","treeData","indent","lazy","lazyTreeNodeMap","lazyColumnIdentifier","childrenColumnName","normalizedData","normalizedLazyNode","parentId","updateTreeData","nested","newTreeData","oldTreeData","rootLazyRowKeys","getExpanded","oldValue","_ref$loaded","_ref$loading","lazyKeys","lazyNodeChildren","_ref2$loaded","_ref2$loading","updateTableScrollY","updateTreeExpandKeys","toggleTreeExpansion","_states4","oldExpanded","loadOrToggle","_states5","loadData","treeNode","_states6","watcher_sortData","sortingColumn","sortProp","sortOrder","doFlattenColumns","watcher","_columns","originColumns","leafColumns","fixedLeafColumns","rightFixedLeafColumns","leafColumnsLength","fixedLeafColumnsLength","rightFixedLeafColumnsLength","isAllSelected","reserveSelection","selectOnIndeterminate","selectable","filteredData","hoverRow","updateColumns","notFixedColumns","needUpdateColumns","debouncedUpdateLayout","isSelected","_states$selection","clearSelection","oldSelection","cleanSelection","deleted","selectedMap","dataMap","newSelection","toggleRowSelection","_toggleAllSelection","selectionChanged","updateSelectionByRowKey","updateAllSelected","selectedCount","isRowSelectable","updateFilters","updateSort","execFilter","_data","execSort","execQuery","columnKeys","_table$$refs","tableHeader","fixedTableHeader","rightFixedTableHeader","panels","filterPanels","filteredValue","commit","silent","multi","clearSort","setExpandRowKeysAdapter","toggleRowExpansionAdapter","hasExpandColumn","mutations","dataInstanceChanged","insertColumn","$ready","removeColumn","changeSortCondition","ingore","filterChange","newFilters","toggleAllSelection","rowSelectedChanged","setHoverRow","setCurrentRow","updateScrollY","src_store","createStore","initialState","mapStates","mapper","scrollbar_width_","scrollbar_width_default","_classCallCheck","table_layout_TableLayout","TableLayout","tableHeight","footerHeight","viewportHeight","bodyWrapper","prevScrollY","offsetHeight","setHeight","updateElsHeight","setMaxHeight","getFlattenColumns","flattenColumns","isColumnGroup","headerWrapper","appendWrapper","footerWrapper","headerTrElm","noneHeader","headerDisplayNone","notifyObservers","headerChild","parentElement","updateColumnsWidth","bodyMinWidth","flexColumns","realWidth","scrollYWidth","totalFlexWidth","allColumnsWidth","flexWidthPerPixel","noneFirstWidth","flexWidth","resizeState","onColumnsChange","onScrollableChange","table_layout","layout_observer","tableLayout","__updated__","columnsMap","ths","_j","th","table_body_typeof","table_body_extends","table_body","ElCheckbox","cellspacing","cellpadding","acc","wrappedRowRender","tooltipEffect","tooltipContent","treeIndent","leftFixedLeafCount","rightFixedLeafCount","columnsCount","leftFixedCount","rightFixedCount","firstDefaultColumnIndex","raf","oldRow","newRow","activateTooltip","tooltip","handleShowPopper","getKeyOfRow","isColumnHidden","getSpan","rowIndex","columnIndex","rowspan","colspan","spanMethod","getRowStyle","getRowClass","classes","getCellStyle","cellStyle","getCellClass","align","cellClassName","getColspanRealWidth","widthArr","handleCellMouseEnter","hoverState","cellChild","createRange","setStart","setEnd","rangeWidth","innerText","setExpectedState","handleCellMouseLeave","handleClosePopper","oldHoverState","handleMouseEnter","handleContextMenu","handleDoubleClick","rowRender","$index","treeRowData","columnsHidden","rowClasses","displayStyle","cellIndex","_getSpan","columnData","noLazyChildren","renderCell","_renderProxy","_store$states","renderExpanded","tr","innerTreeRowData","childKey","_nodes","nodes","filter_panelvue_type_template_id_7f2c919f_render","handleOutsideClick","handleConfirm","handleReset","filterValue","handleSelect","filter_panelvue_type_template_id_7f2c919f_staticRenderFns","dropdowns","src_dropdown","checkbox_group_","checkbox_group_default","filter_panelvue_type_script_lang_js_","ElCheckboxGroup","filterMultiple","filterOpened","_popper","zIndex","nextZIndex","src_filter_panelvue_type_script_lang_js_","filter_panel_component","filter_panel","table_header_extends","getAllColumns","convertToRows","maxLevel","colSpan","subColumn","allColumns","rowSpan","table_header","columnRows","hasGutter","getHeaderRowStyle","getHeaderRowClass","handleMouseMove","handleMouseOut","handleMouseDown","handleHeaderClick","handleHeaderContextMenu","getHeaderCellStyle","getHeaderCellClass","labelClassName","renderHeader","handleSortClick","handleFilterClick","_defaultSort","isCellHidden","headerRowStyle","headerRowClassName","headerCellStyle","headerAlign","headerCellClassName","filterPanel","filterPlacement","$mount","draggingColumn","dragging","tableEl","tableLeft","columnEl","columnRect","minLeft","dragState","startMouseLeft","startLeft","startColumnLeft","resizeProxy","onselectstart","ondragstart","deltaLeft","proxyLeft","handleMouseUp","_dragState","finalLeft","columnWidth","cursor","resizable","bodyStyle","pageX","toggleOrder","sortOrders","givenOrder","table_footer_extends","table_footer","precisions","notNumber","decimal","curr","getRowClasses","before","tablevue_type_script_lang_js_extends","tableIdSeed","tablevue_type_script_lang_js_","Mousewheel","treeProps","hasChildren","TableHeader","TableFooter","TableBody","spinY","currentScrollTop","pixelY","pixelX","syncPostion","_bodyWrapper","_$refs","fixedBodyWrapper","rightFixedBodyWrapper","maxScrollLeftPosition","bindEvents","resizeListener","unbindEvents","shouldUpdateLayout","_resizeState","oldWidth","oldHeight","shouldUpdateHeight","doLayout","_layout","_layout2","_layout2$headerHeight","_layout2$footerHeight","tableData","tableId","_treeProps","_treeProps$hasChildre","_treeProps$children","src_tablevue_type_script_lang_js_","table_component","src_table","packages_table","cellStarts","cellForced","defaultRenderCell","formatter","treeCellPrefix","expandClasses","iconClasses","table_column_extends","columnIdSeed","table_column","showTooltipWhenOverflow","showOverflowTooltip","isSubColumn","owner","columnOrTableParent","realMinWidth","realAlign","realHeaderAlign","getPropsData","getColumnElIndex","setColumnWidth","setColumnForcedProps","setColumnRenders","$scopedSlots","originRenderCell","registerNormalWatchers","aliases","allAliases","columnConfig","registerComplexWatchers","basicProps","sortProps","selectProps","filterProps","chains","hiddenColumns","packages_table_column","pickervue_type_template_id_79ae069f_render","ranged","pickerSize","pickerDisabled","pickerVisible","handleRangeClick","triggerClass","startPlaceholder","editable","handleStartInput","handleStartChange","firstInputId","rangeSeparator","endPlaceholder","handleEndInput","handleEndChange","secondInputId","haveTrigger","clearIcon","handleClickIcon","pickervue_type_template_id_79ae069f_staticRenderFns","date_util_","NewPopper","DEFAULT_FORMATS","date","month","datetime","week","timerange","daterange","monthrange","datetimerange","HAVE_TRIGGER_TYPES","pickervue_type_script_lang_js_DATE_FORMATTER","pickervue_type_script_lang_js_DATE_PARSER","RANGE_FORMATTER","RANGE_PARSER","separator","range1","range2","TYPE_VALUE_RESOLVER_MAP","getMonth","trueDate","setHours","setDate","getDate","getDay","number","dates","PLACEMENT_MAP","parseAsFormatAndType","customFormat","formatAsFormatAndType","valueEquals","dateEquals","aIsDate","bIsDate","aIsArray","bIsArray","isString","pickervue_type_script_lang_js_validator","pickervue_type_script_lang_js_","valueFormat","defaultValue","defaultTime","pickerOptions","unlinkPanels","valueOnOpen","unwatchPickerOptions","showPicker","hidePicker","parsedValue","picker","refInput","valueIsEmpty","selectionMode","showTrigger","formattedValue","valueIsDateObject","handleFieldReset","parseValue","isParsed","formatToValue","isFormattable","parseString","formatToString","isValidValue","emitInput","initialValue","resetView","mountPicker","adjustSpinners","panel","showTime","arrowControl","timeArrowControl","updateOptions","selectableRange","ranges","deep","setSelectionRange","unmountPicker","$off","formatted","src_pickervue_type_script_lang_js_","picker_component","datevue_type_template_id_2440d4ea_render","handleEnter","handleLeave","sidebar","shortcuts","shortcut","handleShortcutClick","visibleDate","userInputDate","handleVisibleDateChange","handleTimePickClose","visibleTime","timePickerVisible","userInputTime","handleVisibleTimeChange","pick","handleTimePick","proxyTimePickerDataProperties","currentView","showYearPicker","yearLabel","showMonthPicker","firstDayOfWeek","disabledDate","handleDatePick","handleYearPick","handleMonthPick","footerVisible","changeToNow","datevue_type_template_id_2440d4ea_staticRenderFns","timevue_type_template_id_3d939089_render","showSeconds","useArrow","amPmMode","handleCancel","timevue_type_template_id_3d939089_staticRenderFns","time_spinnervue_type_template_id_1facadeb_render","noresize","emitSelectRange","mousemove","adjustCurrentSpinner","hoursList","hour","hours","amPm","minutesList","minutes","second","seconds","arrowHourList","arrowMinuteList","minute","arrowSecondList","time_spinnervue_type_template_id_1facadeb_staticRenderFns","time_spinnervue_type_script_lang_js_","getHours","getMinutes","getSeconds","currentScrollbar","bindScrollEvent","scrollDown","modifyDateField","adjustSpinner","bindFuntion","onscroll","scrollBarHeight","typeItemHeight","shouldShowAmPm","isCapital","basic_time_spinnervue_type_script_lang_js_","time_spinner_component","time_spinner","timevue_type_script_lang_js_","TimeSpinner","spinner","needInitAdjust","selectionRange","first","38","40","39","changeSelectionRange","_step","panel_timevue_type_script_lang_js_","time_component","panel_time","year_tablevue_type_template_id_c86ab5e0_render","handleYearTableClick","startYear","year_tablevue_type_template_id_c86ab5e0_staticRenderFns","year_tablevue_type_script_lang_js_datesInYear","numOfDays","firstDay","year_tablevue_type_script_lang_js_","getFullYear","basic_year_tablevue_type_script_lang_js_","year_table_component","year_table","month_tablevue_type_template_id_654d4f42_render","handleMonthTableClick","month_tablevue_type_template_id_654d4f42_staticRenderFns","month_tablevue_type_script_lang_js_datesInMonth","clearDate","getMonthTimestamp","NaN","month_tablevue_type_script_lang_js_","minDate","maxDate","rangeState","selecting","markRange","tableRows","lastRow","lastColumn","cellMatchesDate","inRange","getMonthOfCell","newDate","selectedDate","_loop","isToday","cellDate","basic_month_tablevue_type_script_lang_js_","month_table_component","month_table","date_tablevue_type_template_id_5d1f3341_render","showWeekNumber","WEEKS","isWeekActive","getCellClasses","date_tablevue_type_template_id_5d1f3341_staticRenderFns","_WEEKS","date_tablevue_type_script_lang_js_getDateTimestamp","date_tablevue_type_script_lang_js_removeFromArray","pred","date_tablevue_type_script_lang_js_","offsetDay","day","dateCountOfMonth","dateCountOfLastMonth","numberOfDaysFromPreviousMonth","getDateOfCell","offsetFromStart","setMonth","setFullYear","dayOffset","weekDate","_cell","weekNumber","basic_date_tablevue_type_script_lang_js_","date_table_component","date_table","datevue_type_script_lang_js_","inputElm","pickerWidth","getDefaultValue","timepicker","timeFormat","_date","_selectableRange","emit","onClick","checkDateWithinRange","handleKeyControl","monthDate","dateFormat","TimePicker","YearTable","MonthTable","DateTable","yearTranslation","panel_datevue_type_script_lang_js_","date_component","panel_date","date_rangevue_type_template_id_2652849a_render","minVisibleDate","handleDateInput","handleDateChange","handleMinTimeClose","minVisibleTime","minTimePickerVisible","handleTimeInput","handleTimeChange","handleMinTimePick","minTimePicker","maxVisibleDate","handleMaxTimeClose","maxVisibleTime","maxTimePickerVisible","handleMaxTimePick","maxTimePicker","leftPrevYear","leftPrevMonth","enableYearArrow","leftNextYear","enableMonthArrow","leftNextMonth","leftLabel","leftDate","changerange","handleChangeRange","handleRangePick","rightPrevYear","rightPrevMonth","rightNextYear","rightNextMonth","rightLabel","rightDate","btnDisabled","date_rangevue_type_template_id_2652849a_staticRenderFns","date_rangevue_type_script_lang_js_calcDefaultValue","date_rangevue_type_script_lang_js_","leftYear","leftMonth","leftMonthDate","rightYear","rightMonth","rightMonthDate","dateUserInput","timeUserInput","yearOffset","minDateYear","minDateMonth","maxDateYear","maxDateMonth","_calcDefaultValue","onPick","panel_date_rangevue_type_script_lang_js_","date_range_component","date_range","month_rangevue_type_template_id_f2645fb8_render","month_rangevue_type_template_id_f2645fb8_staticRenderFns","month_rangevue_type_script_lang_js_calcDefaultValue","month_rangevue_type_script_lang_js_","panel_month_rangevue_type_script_lang_js_","month_range_component","month_range","date_picker_getPanel","date_picker","_type","packages_date_picker","time_selectvue_type_template_id_51ab9320_render","time_selectvue_type_template_id_51ab9320_staticRenderFns","parseTime","time1","time2","value1","value2","minutes1","minutes2","formatTime","nextTime","timeValue","stepValue","time_selectvue_type_script_lang_js_","hasDefault","minTime","maxTime","panel_time_selectvue_type_script_lang_js_","time_select_component","time_select","picker_time_select","packages_time_select","time_rangevue_type_template_id_fb28660e_render","handleMinChange","setMinSelectionRange","handleMaxChange","setMaxSelectionRange","time_rangevue_type_template_id_fb28660e_staticRenderFns","MIN_TIME","MAX_TIME","time_rangevue_type_script_lang_js_minTimeOfDay","time_rangevue_type_script_lang_js_maxTimeOfDay","advanceTime","time_rangevue_type_script_lang_js_","minSpinner","maxSpinner","minSelectableRange","maxSelectableRange","half","panel_time_rangevue_type_script_lang_js_","time_range_component","time_range","time_picker","isRange","_isRange","packages_time_picker","mainvue_type_template_id_52060272_render","transition","handleAfterEnter","handleAfterLeave","tooltipId","mainvue_type_template_id_52060272_staticRenderFns","mainvue_type_script_lang_js_","openDelay","closeDelay","wrapper","__vue__","doToggle","handleDocumentClick","doShow","doClose","cleanup","_timer","src_mainvue_type_script_lang_js_","main_component","main","getReference","directive","popover","src_main","manual","enterable","hideAfter","timeoutPending","popperVM","debounceClose","firstElement","getFirstElement","addTooltipClass","componentInstance","removeFocusing","expectedState","slots","packages_tooltip","mainvue_type_template_id_6b29b012_render","handleAction","distinguishCancelAndClose","dangerouslyUseHTMLString","innerHTML","showInput","inputType","inputPlaceholder","handleInputEnter","inputValue","visibility","editorErrorMessage","showCancelButton","cancelButtonClasses","cancelButtonLoading","roundButton","showConfirmButton","confirmButtonClasses","confirmButtonLoading","mainvue_type_template_id_6b29b012_staticRenderFns","lib_locale_","lib_locale_default","aria_dialog_","aria_dialog_default","messageBox","typeMap","warning","message_box_src_mainvue_type_script_lang_js_","closeOnHashChange","confirmButtonClass","cancelButtonClass","getSafeClose","currentId","_closing","onClose","closeDialog","restoreBodyStyle","doAfterClose","$type","inputPattern","inputErrorMessage","getInputElement","inputValidator","validateResult","getFirstFocus","btn","inputRefs","focusAfterClosed","confirmButtonDisabled","packages_message_box_src_mainvue_type_script_lang_js_","src_main_component","message_box_src_main","vdom_","main_typeof","main_defaults","modalFade","confirmButtonPosition","confirmButtonHighlight","cancelButtonHighlight","MessageBoxConstructor","currentMsg","main_instance","msgQueue","defaultCallback","initInstance","main_showNextMsg","showNextMsg","closeTimer","oldCb","main_MessageBox","MessageBox","setDefaults","alert","prompt","packages_message_box_src_main","message_box","breadcrumbvue_type_template_id_4b464c06_render","breadcrumbvue_type_template_id_4b464c06_staticRenderFns","breadcrumbvue_type_script_lang_js_","separatorClass","elBreadcrumb","src_breadcrumbvue_type_script_lang_js_","breadcrumb_component","breadcrumb","packages_breadcrumb","breadcrumb_itemvue_type_template_id_fcf9eaac_render","breadcrumb_itemvue_type_template_id_fcf9eaac_staticRenderFns","breadcrumb_itemvue_type_script_lang_js_","link","src_breadcrumb_itemvue_type_script_lang_js_","breadcrumb_item_component","breadcrumb_item","packages_breadcrumb_item","formvue_type_template_id_a1b5ff34_render","labelPosition","inline","formvue_type_template_id_a1b5ff34_staticRenderFns","formvue_type_script_lang_js_","rules","labelWidth","labelSuffix","inlineMessage","showMessage","validateOnRuleChange","hideRequiredAsterisk","fields","field","removeValidateEvents","addValidateEvents","autoLabelWidth","potentialLabelWidthArr","resetFields","resetField","clearValidate","invalidFields","validateField","getLabelWidthIndex","registerLabelWidth","deregisterLabelWidth","src_formvue_type_script_lang_js_","form_component","src_form","packages_form","form_itemvue_type_template_id_b6f3db6c_render","isRequired","sizeClass","labelStyle","for","labelFor","contentStyle","validateMessage","form_itemvue_type_template_id_b6f3db6c_staticRenderFns","label_wrap_render","label_wrap_staticRenderFns","external_async_validator_","external_async_validator_default","label_wrapvue_type_script_lang_js_","isAutoWidth","updateAll","computedWidth","getLabelWidth","firstElementChild","updateLabelWidth","updateComputedLabelWidth","src_label_wrapvue_type_script_lang_js_","label_wrap_component","label_wrap","form_itemvue_type_script_lang_js_","LabelWrap","computedLabelWidth","parentName","fieldValue","getRules","rule","_formSize","validateDisabled","getFilteredRule","descriptor","firstFields","errors","formRules","selfRules","requiredRule","onFieldBlur","onFieldChange","src_form_itemvue_type_script_lang_js_","form_item_component","form_item","packages_form_item","tab_barvue_type_template_id_2031f33a_render","rootTabs","tabPosition","barStyle","tab_barvue_type_template_id_2031f33a_staticRenderFns","tab_barvue_type_script_lang_js_","tabs","tabSize","sizeName","sizeDir","firstUpperCase","L","paneName","tabStyles","msTransform","webkitTransform","src_tab_barvue_type_script_lang_js_","tab_bar_component","tab_bar","noop","tab_nav_render","tab_nav_staticRenderFns","tab_navvue_type_script_lang_js_firstUpperCase","tab_navvue_type_script_lang_js_","TabBar","panes","currentName","onTabClick","onTabRemove","stretch","scrollable","navOffset","isFocus","focusable","navStyle","scrollPrev","containerSize","navScroll","currentOffset","newOffset","scrollNext","navSize","nav","scrollToActiveTab","activeTab","isHorizontal","activeTabBounding","navScrollBounding","maxOffset","_currentOffset","changeTab","tabList","setFocus","removeFocus","visibilityChangeHandler","visibilityState","windowBlurHandler","windowFocusHandler","scrollBtn","pane","tabName","isClosable","btnClose","tabLabelContent","refInFor","src_tab_navvue_type_script_lang_js_","tab_nav_component","tabs_render","tabs_staticRenderFns","tab_nav","tabsvue_type_script_lang_js_","TabNav","activeName","addable","setCurrentName","calcPaneInstances","isForceUpdate","paneSlots","componentOptions","Ctor","panesChanged","handleTabClick","handleTabRemove","handleTabAdd","changeCurrentName","newButton","navData","src_tabsvue_type_script_lang_js_","tabs_component","packages_tabs","tab_panevue_type_template_id_9145a070_render","tab_panevue_type_template_id_9145a070_staticRenderFns","tab_panevue_type_script_lang_js_","labelContent","src_tab_panevue_type_script_lang_js_","tab_pane_component","tab_pane","tag_render","tag_staticRenderFns","packages_tab_pane","tagvue_type_script_lang_js_","disableTransitions","tagSize","tagEl","src_tagvue_type_script_lang_js_","tag_component","packages_tag","treevue_type_template_id_547575a6_render","highlightCurrent","draggingNode","allowDrop","dropType","getNodeKey","renderAfterExpand","showCheckbox","renderContent","handleNodeExpand","showDropIndicator","treevue_type_template_id_547575a6_staticRenderFns","NODE_KEY","markNodeData","util_getNodeKey","findNearestComponent","_createClass","protoProps","staticProps","node_classCallCheck","getChildState","none","allWithoutDisable","reInitChecked","_getChildState","checkStrictly","getPropertyFromData","dataProp","nodeIdSeed","node_Node","isCurrent","registerNode","isLeaf","isLeafByUser","defaultExpandedKeys","autoExpandParent","currentNodeKey","currentNode","_initDefaultCheckedNode","updateLeafState","insertChild","walk","batch","getChildren","insertAfter","dataIndex","deregisterNode","removeChildByData","targetNode","expandParent","shouldLoadData","setChecked","doCreateChildren","defaultProps","recursion","passValue","checkDescendants","_getChildState2","handleDescendants","isCheck","_getChildState3","_all","forceInit","newData","oldData","newDataMap","newNodes","isNodeExists","nodeKey","model_node","tree_store_typeof","tree_store_classCallCheck","tree_store_TreeStore","TreeStore","nodesMap","loadFn","_initDefaultCheckedNodes","filterNodeMethod","allHidden","instanceChanged","getNode","refData","refNode","parentData","defaultCheckedKeys","checkedKey","setDefaultCheckedKey","getCheckedNodes","leafOnly","includeHalfChecked","checkedNodes","getCheckedKeys","getHalfCheckedNodes","getHalfCheckedKeys","_getAllNodes","allNodes","_child","_setCheckedKeys","checkedKeys","setCheckedNodes","setCheckedKeys","setDefaultExpandedKeys","getCurrentNode","setCurrentNode","prevCurrentNode","setUserCurrentNode","currNode","setCurrentNodeKey","tree_store","tree_nodevue_type_template_id_3ba3ef0e_render","this$1","contextmenu","handleDragStart","dragover","handleDragOver","dragend","handleDragEnd","handleDrop","handleExpandIconClick","handleCheckChange","childNodeRendered","handleChildNodeExpand","tree_nodevue_type_template_id_3ba3ef0e_staticRenderFns","tree_nodevue_type_script_lang_js_","NodeContent","oldChecked","oldIndeterminate","handleSelectChange","expandOnClickNode","checkOnClickNode","_events","halfCheckedNodes","halfCheckedKeys","nodeData","isTree","accordion","src_tree_nodevue_type_script_lang_js_","tree_node_component","tree_node","treevue_type_script_lang_js_","ElTreeNode","treeItems","checkboxItems","dropNode","allowDrag","treeItemArray","checkbox","getNodePath","getCurrentKey","setCurrentKey","updateKeyChildren","initTabIndex","checkedItem","currentItem","hasInput","oldDropNode","dropPrev","dropInner","dropNext","userAllowDropInner","previousSibling","targetPosition","treePosition","prevPercent","nextPercent","indicatorTop","iconPosition","dropIndicator","draggingNodeCopy","src_treevue_type_script_lang_js_","tree_component","src_tree","packages_tree","mainvue_type_template_id_6e53341b_render","typeClass","showIcon","isBigIcon","isBoldTitle","description","closeText","mainvue_type_template_id_6e53341b_staticRenderFns","TYPE_CLASSES_MAP","alert_src_mainvue_type_script_lang_js_","packages_alert_src_mainvue_type_script_lang_js_","alert_src_main_component","alert_src_main","packages_alert","mainvue_type_template_id_43dbc3d8_render","horizontalClass","positionStyle","clearTimer","startTimer","mainvue_type_template_id_43dbc3d8_staticRenderFns","mainvue_type_script_lang_js_typeMap","notification_src_mainvue_type_script_lang_js_","verticalOffset","timer","verticalProperty","destroyElement","packages_notification_src_mainvue_type_script_lang_js_","notification_src_main_component","notification_src_main","NotificationConstructor","src_main_instance","instances","seed","main_Notification","Notification","userOnClose","removedHeight","closeAll","packages_notification_src_main","notification","mainvue_type_template_id_32708644_render","sliderDisabled","showInputControls","firstValue","runwayStyle","onSliderClick","tooltipClass","secondValue","stops","showStops","getStopStyle","markList","mark","mainvue_type_template_id_32708644_staticRenderFns","input_number_","input_number_default","buttonvue_type_template_id_e72d2ad2_render","wrapperStyle","onButtonDown","touchstart","onLeftKeyDown","onRightKeyDown","showTooltip","formatValue","buttonvue_type_template_id_e72d2ad2_staticRenderFns","slider_src_buttonvue_type_script_lang_js_","isClick","startX","currentX","startY","currentY","startPosition","newPosition","currentPosition","enableFormat","formatTooltip","displayTooltip","hideTooltip","onDragStart","onDragging","onDragEnd","resetSize","sliderSize","lengthPerStep","packages_slider_src_buttonvue_type_script_lang_js_","src_button_component","slider_src_button","marker","slider_src_mainvue_type_script_lang_js_","marks","ElInputNumber","SliderButton","SliderMarker","minValue","maxValue","valueChanged","targetValue","button1","sliderOffsetBottom","slider","sliderOffsetLeft","stopCount","stepWidth","marksKeys","barSize","barStart","valuetext","packages_slider_src_mainvue_type_script_lang_js_","slider_src_main_component","slider_src_main","loadingvue_type_template_id_eee0a7ac_render","viewBox","loadingvue_type_template_id_eee0a7ac_staticRenderFns","loadingvue_type_script_lang_js_","setText","src_loadingvue_type_script_lang_js_","loading_component","after_leave_","after_leave_default","Mask","loadingDirective","toggleLoading","modifiers","originalPosition","originalOverflow","maskStyle","insertDom","hiding","domVisible","domInserted","textExr","spinnerExr","backgroundExr","customClassExr","vm","src_directive","LoadingConstructor","src_defaults","fullscreenLoading","src_addStyle","src_Loading","packages_loading","use","$loading","service","iconvue_type_template_id_cb3fe7f4_render","iconvue_type_template_id_cb3fe7f4_staticRenderFns","iconvue_type_script_lang_js_","src_iconvue_type_script_lang_js_","icon_component","packages_icon","src_row","gutter","justify","packages_row","col_typeof","span","xs","sm","md","lg","xl","packages_col","upload_listvue_type_template_id_173fedf5_render","listType","alt","percentage","parsePercentage","handlePreview","upload_listvue_type_template_id_173fedf5_staticRenderFns","progress_","progress_default","upload_listvue_type_script_lang_js_","ElProgress","src_upload_listvue_type_script_lang_js_","upload_list_component","upload_list","external_babel_helper_vue_jsx_merge_props_","external_babel_helper_vue_jsx_merge_props_default","xhr","msg","responseText","getBody","onprogress","formData","FormData","filename","onerror","onload","onSuccess","upload_draggervue_type_template_id_7ebbf219_render","onDrop","onDragover","dragleave","upload_draggervue_type_template_id_7ebbf219_staticRenderFns","upload_draggervue_type_script_lang_js_","uploader","accept","baseType","acceptedType","src_upload_draggervue_type_script_lang_js_","upload_dragger_component","upload_render","upload_staticRenderFns","upload_dragger","uploadvue_type_script_lang_js_","UploadDragger","beforeUpload","drag","onPreview","onRemove","fileList","autoUpload","httpRequest","limit","onExceed","mouseover","reqs","isImage","uploadFiles","postFiles","rawFile","post","processedFile","fileType","File","abort","req","src_uploadvue_type_script_lang_js_","upload_component","src_upload","srcvue_type_script_lang_js_noop","src_render","src_staticRenderFns","srcvue_type_script_lang_js_","UploadList","Upload","dragger","showFileList","beforeRemove","onChange","draging","tempIndex","uploadDisabled","raw","handleStart","handleProgress","getFile","handleSuccess","handleError","handleRemove","doRemove","clearFiles","submit","revokeObjectURL","uploadList","uploadData","uploadComponent","tip","upload_srcvue_type_script_lang_js_","upload_src_component","upload_src","packages_upload","progressvue_type_template_id_229ee406_render","showText","textInside","strokeWidth","trailPathStyle","trackPath","stroke","relativeStrokeWidth","circlePathStyle","strokeLinecap","fontSize","progressTextSize","progressvue_type_template_id_229ee406_staticRenderFns","progressvue_type_script_lang_js_","getCurrentColor","isDashboard","perimeter","rate","strokeDashoffset","strokeDasharray","getLevelColor","getColorArray","seriesColor","src_progressvue_type_script_lang_js_","progress_component","progress","packages_progress","spinnervue_type_template_id_697b8538_render","strokeColor","spinnervue_type_template_id_697b8538_staticRenderFns","spinnervue_type_script_lang_js_","src_spinnervue_type_script_lang_js_","spinner_component","packages_spinner","mainvue_type_template_id_455b9f60_render","mainvue_type_template_id_455b9f60_staticRenderFns","src_mainvue_type_script_lang_js_typeMap","message_src_mainvue_type_script_lang_js_","packages_message_src_mainvue_type_script_lang_js_","message_src_main_component","message_src_main","MessageConstructor","message_src_main_instance","main_instances","main_seed","main_Message","Message","packages_message_src_main","packages_message","mainvue_type_template_id_7ccb6598_render","hidden","isDot","mainvue_type_template_id_7ccb6598_staticRenderFns","badge_src_mainvue_type_script_lang_js_","packages_badge_src_mainvue_type_script_lang_js_","badge_src_main_component","badge_src_main","badge","mainvue_type_template_id_59a4a40f_render","mainvue_type_template_id_59a4a40f_staticRenderFns","card_src_mainvue_type_script_lang_js_","packages_card_src_mainvue_type_script_lang_js_","card_src_main_component","card_src_main","card","mainvue_type_template_id_ada57782_render","handleKey","rateDisabled","resetCurrentValue","selectValue","getIconStyle","showDecimalIcon","decimalIconClass","decimalStyle","showScore","mainvue_type_template_id_ada57782_staticRenderFns","types_","rate_src_mainvue_type_script_lang_js_","pointerAtLeftHalf","lowThreshold","highThreshold","voidColor","disabledVoidColor","voidIconClass","disabledVoidIconClass","allowHalf","texts","scoreTemplate","valueDecimal","classMap","getValueFromMap","voidClass","activeClass","colorMap","matchedKeys","matchedValue","showWhenDisabled","showWhenAllowHalf","packages_rate_src_mainvue_type_script_lang_js_","rate_src_main_component","rate_src_main","stepsvue_type_template_id_3c6b6dc0_render","stepsvue_type_template_id_3c6b6dc0_staticRenderFns","stepsvue_type_script_lang_js_","alignCenter","finishStatus","processStatus","stepOffset","_steps","src_stepsvue_type_script_lang_js_","steps_component","packages_steps","stepvue_type_template_id_f414a87a_render","isSimple","isLast","isCenter","isVertical","currentStatus","lineStyle","stepvue_type_template_id_f414a87a_staticRenderFns","stepvue_type_script_lang_js_","internalStatus","prevStatus","prevStep","stepsCount","flexBasis","maxWidth","updateStatus","prevChild","calcProgress","transitionDelay","borderWidth","unwatch","src_stepvue_type_script_lang_js_","step_component","packages_step","mainvue_type_template_id_5d5d1482_render","carouselClasses","arrowDisplay","arrow","handleButtonEnter","handleButtonLeave","throttledArrowClick","indicatorPosition","indicatorsClasses","throttledIndicatorHover","handleIndicatorClick","hasLabel","mainvue_type_template_id_5d5d1482_staticRenderFns","throttle_","throttle_default","carousel_src_mainvue_type_script_lang_js_","initialIndex","indicator","containerWidth","setActiveItem","resetItemPosition","pauseTimer","itemInStage","inStage","updateItems","translateItem","playSlides","filteredItems","handleIndicatorHover","packages_carousel_src_mainvue_type_script_lang_js_","carousel_src_main_component","carousel_src_main","carousel","BAR_MAP","scrollSize","client","horizontal","renderThumbStyle","move","bar","src_bar","clickTrackHandler","clickThumbHandler","ctrlKey","startDrag","thumbHalf","thumb","thumbPositionPercentage","cursorDown","mouseMoveDocumentHandler","mouseUpDocumentHandler","prevPage","thumbClickPosition","scrollbar_src_main","Bar","native","wrapStyle","wrapClass","viewClass","viewStyle","sizeWidth","sizeHeight","moveX","moveY","gutterWith","gutterStyle","marginBottom","heightPercentage","widthPercentage","itemvue_type_template_id_1801ae19_render","ready","itemvue_type_template_id_1801ae19_staticRenderFns","CARD_SCALE","itemvue_type_script_lang_js_","processIndex","calcCardTranslate","parentWidth","calcTranslate","parentType","parentDirection","translateType","src_itemvue_type_script_lang_js_","item_component","src_item","carousel_item","collapsevue_type_template_id_461d57f4_render","collapsevue_type_template_id_461d57f4_staticRenderFns","collapsevue_type_script_lang_js_","activeNames","setActiveNames","src_collapsevue_type_script_lang_js_","collapse_component","packages_collapse","collapse_itemvue_type_template_id_2d05faac_render","handleEnterClick","collapse_itemvue_type_template_id_2d05faac_staticRenderFns","collapse_itemvue_type_script_lang_js_","contentWrapStyle","contentHeight","_uid","src_collapse_itemvue_type_script_lang_js_","collapse_item_component","collapse_item","packages_collapse_item","cascadervue_type_template_id_032537a6_render","toggleDropDownVisible","realSize","inputHover","handleKeyDown","dropDownVisible","presentText","clearBtnVisible","presentTags","handleDelete","$forceUpdate","handleDropdownLeave","filtering","handleExpandChange","checkedValue","handleSuggestionKeyDown","handleSuggestionClick","cascadervue_type_template_id_032537a6_staticRenderFns","cascader_panel_","cascader_panel_default","aria_utils_","aria_utils_default","KeyCode","MigratingProps","expandTrigger","newProp","changeOnSelect","hoverThreshold","PopperMixin","InputSizeMap","cascadervue_type_script_lang_js_","ElCascaderPanel","showAllLevels","beforeFilter","inputInitialHeight","pressDeleteCount","oldProp","_MigratingProps$oldPr","computePresentContent","_config","filterHandler","getSuggestions","scrollIntoView","focusFirstNode","clearCheckedNodes","suggestionPanel","firstNode","firstMenu","computePresentTags","computePresentText","getNodeByValue","getText","genTag","rest","restCount","keyword","includes","getFlattedNodes","getValueByOption","lastTag","doCheck","calculateMultiCheckedValue","inputInner","suggestionPanelEl","src_cascadervue_type_script_lang_js_","cascader_component","packages_cascader","mainvue_type_template_id_55c8ade7_render","colorDisabled","colorSize","handleTrigger","showAlpha","displayedColor","showPanelColor","predefine","confirmValue","clearValue","mainvue_type_template_id_55c8ade7_staticRenderFns","color_typeof","color_classCallCheck","hsv2hsl","isOnePointZero","isPercentage","bound01","processPercent","INT_HEX_MAP","11","13","15","toHex","hexOne","HEX_INT_MAP","D","E","parseHexChannel","hsl2hsv","smin","lmin","sv","rgb2hsv","hsv2rgb","mod","_hue","_saturation","enableAlpha","doOnChange","toRgb","fromString","fromHSV","_hsl2hsv","_parts","_parts2","_rgb2hsv","_rgb2hsv2","_h2","_s2","hsl","_hsv2rgb","_hsl","_hsv2rgb2","_r","_g","src_color","picker_dropdownvue_type_template_id_06601625_render","float","customInput","picker_dropdownvue_type_template_id_06601625_staticRenderFns","sv_panelvue_type_template_id_d8583596_render","cursorTop","cursorLeft","sv_panelvue_type_template_id_d8583596_staticRenderFns","isDragging","moveFn","upFn","sv_panelvue_type_script_lang_js_","colorValue","handleDrag","components_sv_panelvue_type_script_lang_js_","sv_panel_component","sv_panel","hue_slidervue_type_template_id_5cdc43b1_render","thumbLeft","thumbTop","hue_slidervue_type_template_id_5cdc43b1_staticRenderFns","hue_slidervue_type_script_lang_js_","hueValue","getThumbLeft","getThumbTop","dragConfig","components_hue_slidervue_type_script_lang_js_","hue_slider_component","hue_slider","alpha_slidervue_type_template_id_068c66cb_render","alpha_slidervue_type_template_id_068c66cb_staticRenderFns","alpha_slidervue_type_script_lang_js_","getBackground","_color$toRgb","components_alpha_slidervue_type_script_lang_js_","alpha_slider_component","alpha_slider","predefinevue_type_template_id_06e03093_render","rgbaColors","predefinevue_type_template_id_06e03093_staticRenderFns","predefinevue_type_script_lang_js_","parseColors","components_predefinevue_type_script_lang_js_","predefine_component","picker_dropdownvue_type_script_lang_js_","SvPanel","HueSlider","AlphaSlider","Predefine","currentColor","components_picker_dropdownvue_type_script_lang_js_","picker_dropdown_component","picker_dropdown","color_picker_src_mainvue_type_script_lang_js_","colorFormat","displayedRgb","currentValueColor","currentValueColorRgb","resetColor","PickerDropdown","packages_color_picker_src_mainvue_type_script_lang_js_","color_picker_src_main_component","color_picker_src_main","color_picker","mainvue_type_template_id_5c654dd8_render","sourceData","leftDefaultChecked","onSourceCheckedChange","hasButtonTexts","rightChecked","addToLeft","buttonTexts","leftChecked","addToRight","targetData","rightDefaultChecked","onTargetCheckedChange","mainvue_type_template_id_5c654dd8_staticRenderFns","transfer_panelvue_type_template_id_2ddab8bd_render","isIndeterminate","handleAllCheckedChange","allChecked","checkedSummary","hasFooter","inputIcon","clearQuery","hasNoMatch","keyProp","disabledProp","transfer_panelvue_type_template_id_2ddab8bd_staticRenderFns","transfer_panelvue_type_script_lang_js_","OptionContent","getParent","labelProp","defaultChecked","checkChangeByUser","updateAllChecked","movedKeys","filteredDataKeys","checkableData","checkableDataKeys","checkedLength","dataLength","_format","noChecked","hasChecked","src_transfer_panelvue_type_script_lang_js_","transfer_panel_component","transfer_panel","transfer_src_mainvue_type_script_lang_js_","TransferPanel","targetOrder","dataObj","itemsToBeMoved","itemKey","which","leftPanel","rightPanel","packages_transfer_src_mainvue_type_script_lang_js_","transfer_src_main_component","transfer_src_main","mainvue_type_template_id_5bf181d4_render","mainvue_type_template_id_5bf181d4_staticRenderFns","container_src_mainvue_type_script_lang_js_","packages_container_src_mainvue_type_script_lang_js_","container_src_main_component","container_src_main","packages_container","mainvue_type_template_id_2b296ab2_render","mainvue_type_template_id_2b296ab2_staticRenderFns","header_src_mainvue_type_script_lang_js_","packages_header_src_mainvue_type_script_lang_js_","header_src_main_component","header_src_main","mainvue_type_template_id_03411dbf_render","mainvue_type_template_id_03411dbf_staticRenderFns","aside_src_mainvue_type_script_lang_js_","packages_aside_src_mainvue_type_script_lang_js_","aside_src_main_component","aside_src_main","aside","mainvue_type_template_id_2a3a7406_render","mainvue_type_template_id_2a3a7406_staticRenderFns","main_src_mainvue_type_script_lang_js_","packages_main_src_mainvue_type_script_lang_js_","main_src_main_component","main_src_main","packages_main","mainvue_type_template_id_80210338_render","mainvue_type_template_id_80210338_staticRenderFns","footer_src_mainvue_type_script_lang_js_","packages_footer_src_mainvue_type_script_lang_js_","footer_src_main_component","footer_src_main","main_render","main_staticRenderFns","timeline_src_mainvue_type_script_lang_js_","timeline","packages_timeline_src_mainvue_type_script_lang_js_","timeline_src_main_component","timeline_src_main","itemvue_type_template_id_61a69e50_render","hideTimestamp","timestamp","itemvue_type_template_id_61a69e50_staticRenderFns","timeline_src_itemvue_type_script_lang_js_","packages_timeline_src_itemvue_type_script_lang_js_","src_item_component","timeline_src_item","timeline_item","mainvue_type_template_id_01cf3b65_render","underline","mainvue_type_template_id_01cf3b65_staticRenderFns","link_src_mainvue_type_script_lang_js_","packages_link_src_mainvue_type_script_lang_js_","link_src_main_component","link_src_main","packages_link","mainvue_type_template_id_7fa02a7e_functional_true_render","contentPosition","mainvue_type_template_id_7fa02a7e_functional_true_staticRenderFns","divider_src_mainvue_type_script_lang_js_","packages_divider_src_mainvue_type_script_lang_js_","divider_src_main_component","divider_src_main","divider","mainvue_type_template_id_44d84a7c_render","imageStyle","clickHandler","$listeners","showViewer","imageIndex","closeViewer","previewSrcList","mainvue_type_template_id_44d84a7c_staticRenderFns","image_viewervue_type_template_id_5e73b307_render","handleMaskClick","isSingle","infinite","isFirst","handleActions","toggleMode","urlList","imgStyle","currentImg","handleImgLoad","handleImgError","image_viewervue_type_template_id_5e73b307_staticRenderFns","image_viewervue_type_script_lang_js_extends","Mode","CONTAIN","ORIGINAL","mousewheelEventName","image_viewervue_type_script_lang_js_","onSwitch","maskClosable","isShow","deg","enableTransition","_transform","$img","img","deviceSupportUninstall","deviceSupportInstall","_keyDownHandler","_mouseWheelHandler","wheelDelta","zoomRate","_transform2","pageY","_dragHandler","modeNames","modeValues","_zoomRate$rotateDeg$e","rotateDeg","src_image_viewervue_type_script_lang_js_","image_viewer_component","image_viewer","isSupportObjectFit","objectFit","ObjectFit","NONE","COVER","FILL","SCALE_DOWN","prevOverflow","image_src_mainvue_type_script_lang_js_","ImageViewer","scrollContainer","imageWidth","imageHeight","getImageStyle","previewIndex","srcIndex","addLazyLoadListener","removeLazyLoadListener","Image","handleLoad","handleLazyLoad","_scrollContainer","_lazyLoadHandler","_$el","containerHeight","imageAspectRatio","containerAspectRatio","isSmaller","packages_image_src_mainvue_type_script_lang_js_","image_src_main_component","image_src_main","packages_image","mainvue_type_template_id_6d9756be_render","i18nDate","validatedRange","realSelectedDay","realFirstDayOfWeek","pickDay","mainvue_type_template_id_6d9756be_staticRenderFns","date_table_render","date_table_staticRenderFns","date_","date_default","src_date_tablevue_type_script_lang_js_","selectedDay","hideHeader","toNestedArr","days","getFormateDate","curMonthDatePrefix","prevMonthDatePrefix","nextMonthDatePrefix","formatedToday","cellRenderProxy","elCalendar","dateCell","WEEK_DAYS","dayNames","isInRange","_range","currentMonthRange","remaining","nextMonthRange","prevMonthDays","currentMonthDays","nextMonthDays","weekDays","thead","calendar_src_date_tablevue_type_script_lang_js_","src_date_table_component","src_date_table","validTypes","oneDay","calendar_src_mainvue_type_script_lang_js_","formatedDate","toDate","rangeValidator","isStart","expected","startDay","lastDay","nextMontFirstDay","packages_calendar_src_mainvue_type_script_lang_js_","calendar_src_main_component","calendar_src_main","calendar","mainvue_type_template_id_257dd4a9_render","styleRight","styleBottom","mainvue_type_template_id_257dd4a9_staticRenderFns","cubic","easeInOutCubic","backtop_src_mainvue_type_script_lang_js_","visibilityHeight","throttledScrollHandler","onScroll","scrollToTop","beginTime","beginValue","rAF","frameFunc","packages_backtop_src_mainvue_type_script_lang_js_","backtop_src_main_component","backtop_src_main","backtop","getStyleComputedProperty","getPositionSize","getOffsetHeight","getClientHeight","main_getScrollOptions","getElementTop","main_handleScroll","_scope","_getScrollOptions","containerInfo","shouldTrigger","scrollBottom","heightBelowTop","borderBottom","infinite_scroll_src_main","_getScrollOptions2","_el$scope","infinite_scroll","mainvue_type_template_id_5070954c_render","mainvue_type_template_id_5070954c_staticRenderFns","page_header_src_mainvue_type_script_lang_js_","packages_page_header_src_mainvue_type_script_lang_js_","page_header_src_main_component","page_header_src_main","page_header","cascader_panelvue_type_template_id_34932346_render","menus","cascader_panelvue_type_template_id_34932346_staticRenderFns","cascader_node_render","cascader_node_staticRenderFns","radio_","radio_default","cascader_nodevue_type_script_lang_js_","ElRadio","nodeId","isSameNode","inActivePath","isInPath","activePath","inCheckedPath","checkedNodePaths","checkedPath","handleExpand","lazyLoad","handleMultiCheckChange","pathNodes","selectedPathNode","renderPrefix","renderCheckbox","renderRadio","renderCheckIcon","renderPostfix","renderLoadingIcon","renderExpandIcon","renderLabelFn","src_cascader_nodevue_type_script_lang_js_","cascader_node_component","cascader_menu_render","cascader_menu_staticRenderFns","cascader_node","cascader_menuvue_type_script_lang_js_","CascaderNode","activeNode","hoverTimer","menuId","hoverZone","_$el$getBoundingClien","clearHoverZone","renderEmptyText","renderNodeList","isHoverMenu","src_cascader_menuvue_type_script_lang_js_","cascader_menu_component","cascader_menu","node_createClass","src_node_classCallCheck","src_node_Node","initState","initChildren","labelKey","calculatePathNodes","pathLabels","childrenData","getPath","emitPath","allLevels","handlerName","_len2","_key2","onParentCheck","setCheckState","onChildCheck","validChildren","totalNum","checkedNum","syncCheckState","disabledKey","_config2","leafKey","leaf","src_node","store_classCallCheck","flatNodes","store_Store","Store","initNodes","flattedNodes","leafNodes","appendNode","appendNodes","nodeDataList","getNodes","cachedNodes","cascader_panel_src_store","cascader_panelvue_type_script_lang_js_extends","cascader_panelvue_type_script_lang_js_KeyCode","DefaultProps","cascader_panelvue_type_script_lang_js_isLeaf","getSibling","siblings","getMenuIndex","pieces","focusNode","checkNode","cascader_panelvue_type_script_lang_js_","CascaderMenu","renderLabel","loadCount","initStore","syncCheckedValue","calculateCheckedNodePaths","syncMenuState","syncActivePath","syncMultiCheckState","checkedNode","expandNodes","checkedValues","preMenu","expandedNode","nextMenu","pathValues","activePathValues","onFullfiled","dataList","nodeValue","menuElement","src_cascader_panelvue_type_script_lang_js_","cascader_panel_component","cascader_panel","src_main_render","src_main_staticRenderFns","packages_cascader_panel","avatar_src_mainvue_type_script_lang_js_","srcSet","isImageExist","avatarClass","errorFlag","renderAvatar","sizeStyle","lineHeight","packages_avatar_src_mainvue_type_script_lang_js_","avatar_src_main_component","avatar_src_main","avatar","mainvue_type_template_id_a4885264_render","drawerSize","withHeader","closeDrawer","mainvue_type_template_id_a4885264_staticRenderFns","drawer_src_mainvue_type_script_lang_js_","wrapperClosable","prevActiveElement","packages_drawer_src_mainvue_type_script_lang_js_","drawer_src_main_component","drawer_src_main","drawer","mainvue_type_template_id_048de730_render","hideIcon","iconColor","cancelButtonType","displayCancelButtonText","confirmButtonType","displayConfirmButtonText","mainvue_type_template_id_048de730_staticRenderFns","popover_","popover_default","popconfirm_src_mainvue_type_script_lang_js_","ElPopover","packages_popconfirm_src_mainvue_type_script_lang_js_","popconfirm_src_main_component","popconfirm_src_main","src_install","locale","i18n","$msgbox","$alert","$confirm","$prompt","$notify","$message","CollapseTransition","Loading","Pagination","Dialog","Autocomplete","Dropdown","DropdownMenu","DropdownItem","Submenu","MenuItemGroup","Input","InputNumber","Radio","RadioGroup","RadioButton","Checkbox","CheckboxButton","CheckboxGroup","Switch","Select","Option","OptionGroup","Button","ButtonGroup","Table","TableColumn","DatePicker","TimeSelect","Popover","Tooltip","Breadcrumb","BreadcrumbItem","Form","FormItem","Tabs","TabPane","Tag","Tree","Alert","Slider","Icon","Row","Col","Progress","Spinner","Badge","Card","Rate","Steps","Step","Carousel","Scrollbar","CarouselItem","Collapse","CollapseItem","Cascader","ColorPicker","Transfer","Container","Header","Aside","Main","Footer","Timeline","TimelineItem","Link","Divider","Calendar","Backtop","InfiniteScroll","PageHeader","CascaderPanel","Avatar","Drawer","Popconfirm","fecha","twoDigits","threeDigits","fourDigits","word","literal","regexEscape","shorten","newArr","monthUpdate","arrName","pad","monthNames","monthNamesShort","dayNamesShort","DoFn","formatFlags","dateObj","DD","Do","dd","ddd","dddd","M","MM","MMM","MMMM","yyyy","hh","H","HH","mm","ss","getMilliseconds","SS","SSS","ZZ","getTimezoneOffset","parseFlags","da","cent","millisecond","isPm","timezoneOffset","masks","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","i18nSettings","literals","$0","$1","dateStr","dateInfo","parseInfo","newFormat","UTC","useHasFeature","ExecutionEnvironment","isEventSupported","eventNameSuffix","canUseDOM","isSupported","implementation","hasFeature","TO_STRING_TAG_SUPPORT","$forEach","arrayMethodIsStrict","STRICT_METHOD","_ie","_firefox","_opera","_webkit","_chrome","_ie_real_version","_osx","_windows","_linux","_android","_win64","_iphone","_ipad","_native","_mobile","_populated","_populate","uas","agent","os","documentMode","trident","ver","UserAgent_DEPRECATED","ie","ieCompatibilityMode","ie64","firefox","opera","webkit","safari","chrome","windows","osx","linux","iphone","mobile","nativeApp","android","ipad","checkCorrectnessOfIteration","INCORRECT_ITERATION","iterable","stat","formatRegExp","isNativeStringType","isEmptyValue","asyncParallelArray","arrLength","asyncSerialArray","original","flattenObjArr","objArr","asyncMap","flattenArr","objArrKeys","objArrLength","complementError","oe","fullField","deepMerge","messages","whitespace","email","types","integer","getYear","custom","ruleType","spRegexp","ENUM","mismatch","_pattern","floatFn","dateObject","newMessages","invalid","cloned","Schema","_messages","source_","oc","series","getValidationMethod","getType","errorFields","doIt","defaultField","addFullfield","schema","fieldsSchema","fieldSchema","errs","messageIndex","register","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","adapter","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","TO_STRING_TAG","originalModule","webpackPolyfill","GLTFLoader","dracoLoader","ddsLoader","GLTFRegistry","_onError","gltf","setDRACOLoader","setDDSLoader","magic","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","asset","extensionsUsed","extensionName","extensionsRequired","KHR_LIGHTS_PUNCTUAL","GLTFLightsExtension","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","MSFT_TEXTURE_DDS","GLTFTextureDDSExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","GLTFParser","lightDefs","loadLight","lightIndex","lightNode","lightDef","innerConeAngle","outerConeAngle","getMaterialType","extendParams","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","BIN","headerView","getUint32","chunkView","chunkIndex","chunkLength","chunkType","contentArray","byteOffset","specularGlossinessParams","pbrSpecularGlossiness","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","diffuseFactor","diffuseTexture","glossinessFactor","specularFactor","specularGlossinessTexture","specGlossMapDef","createMaterial","isGLTFSpecularGlossinessMaterial","cloneMaterial","refreshUniforms","USE_GLOSSINESSMAP","USE_ROUGHNESSMAP","GLTFCubicSplineInterpolant","decodePrimitive","primitive","bufferViewIndex","bufferView","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","getDependency","extendTexture","texCoord","stride2","stride3","td","m0","m1","WEBGL_CONSTANTS","FLOAT","FLOAT_MAT3","FLOAT_MAT4","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","LINEAR","REPEAT","SAMPLER_2D","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","UNSIGNED_BYTE","UNSIGNED_SHORT","5120","5121","5122","5123","5125","5126","WEBGL_FILTERS","9728","9729","9984","9985","9986","9987","WEBGL_WRAPPINGS","33071","33648","10497","WEBGL_TYPE_SIZES","POSITION","NORMAL","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","INTERPOLATION","CUBICSPLINE","STEP","ALPHA_MODES","OPAQUE","MASK","BLEND","MIME_TYPE_FORMATS","createDefaultMaterial","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","addMorphTargets","targets","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","morphPositions","meshDef","targetNames","createPrimitiveKey","primitiveDef","geometryKey","dracoExtension","createAttributesKey","attributesKey","primitiveCache","textureLoader","fileLoader","computeBounds","accessor","addPrimitiveAttributes","assignAttributeAccessor","accessorIndex","gltfAttributeName","toTrianglesDrawMode","numberOfTriangles","newIndices","newGeometry","markDefs","getDependencies","dependencies","scenes","nodeDefs","skinDefs","skins","meshDefs","meshes","meshReferences","meshUses","skinLength","joints","nodeIndex","nodeLength","nodeDef","skin","dependency","loadScene","loadNode","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","def","bufferIndex","bufferDef","uri","bufferViewDef","bufferViews","off_index","offstep","sparse","pendingBufferViews","TypedArray","elementBytes","itemBytes","byteStride","ibSlice","ibCacheKey","ib","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","textureIndex","webkitURL","textureDef","textureExtensions","sourceURI","isObjectURL","samplers","sampler","mapName","mapDef","assignFinalMaterial","useVertexTangents","useVertexColors","useFlatShading","useMorphTargets","useMorphNormals","pointsMaterial","lineMaterial","materialType","materialExtensions","sgExtension","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","alphaMode","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","loadGeometries","primitives","createDracoPrimitive","geometryPromise","meshIndex","cameraIndex","cameraDef","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","inputAccessors","outputAccessors","inputAccessor","outputAccessor","targetName","outputArray","scaled","isInterpolantFactoryMethodGLTFCubicSpline","instanceNum","buildNodeHierachy","parentObject","pendingJoints","jointNodes","jointNode","sceneIndex","sceneDef","nodeIds","getOwnPropertyDescriptorModule","callRegExpExec","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","lim","lastLength","ignoreCase","multiline","sticky","lastLastIndex","separatorCopy","splitter","unicodeMatching","aa","execScript","POSITIVE_INFINITY","bufferSize","ba","ca","U","V","fa","G","I","J","K","ea","R","ga","Q","W","verify","Y","Z","ia","X","ADAPTIVE","BLOCK","Zlib","NURBSUtils","findSpan","calcBasisFunctions","saved","rv","lv","calcBSplinePoint","Nj","wNj","calcBasisFunctionDerivatives","zeroArr","ders","ndu","rk","pk","j1","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","fbxTree","connections","sceneGraph","FBXLoader","FBXTreeParser","GeometryParser","AnimationParser","TextParser","BinaryParser","BinaryReader","littleEndian","dv","FBXTree","isFbxFormatBinary","CORRECT","convertArrayBufferToString","isFbxFormatASCII","read","getFbxVersion","versionRegExp","convertFBXTimeToSeconds","FBXBuffer","FBXText","parseConnections","deformers","parseDeformers","geometryMap","parseScene","connectionMap","rawConnections","Connections","rawConnection","fromID","toID","relationship","parents","parentRelationship","ID","childRelationship","blobs","Objects","videoNodes","Video","nodeID","videoNode","RelativeFilename","Filename","arrayBufferContent","Content","base64Content","parseImage","fileName","textureMap","textureNodes","parseTexture","textureNode","attrName","wrapModeU","WrapModeU","wrapModeV","WrapModeV","valueU","valueV","Scaling","FileName","materialMap","materialNodes","parseMaterial","materialNode","ShadingModel","parseParameters","BumpFactor","Diffuse","DiffuseColor","DisplacementFactor","Emissive","EmissiveColor","EmissiveFactor","Opacity","ReflectionFactor","Shininess","Specular","SpecularColor","LayeredTexture","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","modelNode","setLookAtProperties","parentConnections","connection","bindSkeleton","createAmbientLight","setupMorphMaterials","transformData","parentMatrixWorld","generateTransform","buildSkeleton","createCamera","createLight","createMesh","createCurve","getTransformData","subBone","cameraAttribute","NodeAttribute","CameraProjectionType","nearClippingPlane","NearPlane","farClippingPlane","FarPlane","AspectWidth","AspectHeight","FieldOfView","FocalLength","lightAttribute","LightType","Intensity","CastLightOnObject","FarAttenuationEnd","EnableFarAttenuation","InnerAngle","OuterAngle","CastShadows","FBX_Deformer","geo","inheritType","InheritType","getEulerOrder","RotationOrder","Lcl_Translation","preRotation","PreRotation","Lcl_Rotation","postRotation","PostRotation","Lcl_Scaling","scalingOffset","ScalingOffset","scalingPivot","ScalingPivot","rotationOffset","RotationOffset","rotationPivot","RotationPivot","lookAtTarget","bindMatrices","parsePoseNodes","geoRelationships","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","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","morphIndex","morphGeoInfo","morphBuffers","NormalNode","MappingInformationType","referenceType","ReferenceInformationType","Normals","indexBuffer","NormalIndex","NormalsIndex","dataSize","UVNode","UV","UVIndex","ColorNode","Colors","ColorIndex","MaterialNode","materialIndexBuffer","materialIndices","Order","KnotVector","pointsValues","animationClips","rawClips","parseClips","rawClip","addClip","AnimationCurve","curveNodesMap","parseAnimationCurveNodes","parseAnimationCurves","layersMap","parseAnimationLayers","parseAnimStacks","rawCurveNodes","AnimationCurveNode","rawCurveNode","curveNode","rawCurves","animationCurve","KeyTime","KeyValueFloat","animationCurveID","animationCurveRelationship","rawLayers","AnimationLayer","layerCurveNodes","modelID","rawModel","modelName","initialPosition","initialRotation","initialScale","morph","deformerID","morpherID","morphName","rawStacks","AnimationStack","rawTracks","generateTracks","positionTrack","generateVectorTrack","rotationTrack","generateRotationTrack","scaleTrack","morphTrack","generateMorphTrack","getTimesForAllAxes","getKeyframeTrackValues","interpolateRotations","quaternionValues","morphNum","prevValue","xIndex","yIndex","xValue","yValue","zValue","valuesSpan","absoluteSpan","numSubIntervals","nextValue","initialTime","timeSpan","interpolatedTimes","interpolatedValues","getPrevNode","nodeStack","currentIndent","getCurrentProp","currentProp","pushStack","popStack","setCurrentProp","currentPropName","matchComment","matchEmpty","matchBeginning","matchProperty","parseNodeBegin","parseNodeProperty","parseNodePropertyContinued","nodeAttrs","parseNodeAttr","contentLine","propName","propValue","connProps","parseNumberArray","parseNodeSpecialProperty","innerPropName","innerPropType1","innerPropType2","innerPropFlag","innerPropValue","reader","skip","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","inflate","Inflate","reader2","decompress","nullByte","dataArray","infoObject","tempEuler","tempVec","lTranslationM","lPreRotationM","lRotationM","lPostRotationM","lScalingM","lScalingPivotM","lScalingOffsetM","lRotationOffsetM","lRotationPivotM","lParentGX","lGlobalT","lLRM","lParentGRM","lParentTM","lParentGSM","lGlobalRS","lParentLSM_inv","lParentGSM_noLocal","lRotationPivotM_inv","lScalingPivotM_inv","lTransform","lLocalTWithAllPivotAndOffsetInfo","lGlobalTranslation","enums","97","factory","__WEBPACK_EXTERNAL_MODULE_a352__","LIBRARY","$export","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","DEFAULT","IS_SET","FORCED","IteratorPrototype","getMethod","kind","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","getKeys","wks","strfn","rxfn","cof","ARG","tryGet","callee","SRC","$toString","TPL","safe","dPs","Empty","createDict","lt","gt","USE_SYMBOL","$exports","INCLUDES","searchString","ObjectProto","bitmap","regexpFlags","nativeExec","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","SHARED","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","builtinExec","$includes","IObject","valueOf","gOPS","pIE","$assign","aLen","getSymbols","isEnum","__g","__e","Attributes","UNSCOPABLES","ArrayProto","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","$replace","tailPos","symbols","ch","$iterators","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","toIObject","toAbsoluteIndex","IS_INCLUDES","fromIndex","insertNodeAt","camelize","getConsole","fatherNode","addToUnscopables","iterated","Arguments","arrayIndexOf","STARTS_WITH","$startsWith","startsWith","currentScript","scripts","stack","setPublicPath_i","_arrayWithHoles","_iterableToArrayLimit","_arr","_n","_d","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_nonIterableRest","_slicedToArray","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default","helper","buildAttribute","computeVmIndex","vnodes","elt","_computeIndexes","isTransition","footerOffset","elmFromNodes","footerIndex","rawIndexes","ind","evtName","evtData","delegateAndEmit","realList","isTransitionName","vuedraggable_isTransition","_slots","getSlot","scopedSlot","computeChildrenAndOffsets","headerOffset","getComponentAttributes","componentData","componentDataAttrs","eventsListened","eventsToEmit","readonlyProperties","draggingElement","noTransitionOnDrag","draggableComponent","transitionMode","noneFunctionalComponentMode","_computeChildrenAndOf","getTag","getIsFunctional","optionsAdded","onDragMove","_sortable","rootContainer","computeIndexes","newOptionValue","fnOptions","_vnode","getChildrenNodes","rawNodes","visibleIndexes","getUnderlyingVm","htmlElt","getUnderlyingPotencialDraggableComponent","vue","_componentTag","emitChanges","alterList","onList","newList","spliceList","_arguments","updatePosition","getRelatedContextFromMoveEvent","getVmIndex","domIndex","indexes","numberIndexes","resetTransitionData","transitionContainer","kept","_underlying_vm_","onDragAdd","onDragRemove","onDragUpdate","updateProperty","computeFutureIndex","relatedContext","domChildren","currentDOMIndex","draggedInList","draggedContext","futureIndex","sendEvt","vuedraggable","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","gOPD","validateRangeInOneMonth","extractTimeFormat","extractDateFormat","changeYearMonthAndClampDate","timeWithinRange","limitTimeRange","clearMilliseconds","clearTime","modifyWithTimeString","modifyTime","modifyDate","getRangeMinutes","getMonthDays","getPrevMonthLastDays","getRangeHours","getWeekNumber","getStartDateOfMonth","nextDate","prevDate","getFirstDayOfMonth","getDayCountOfYear","getDayCountOfMonth","parseDate","formatDate","isDateObject","getI18nSettings","_date2","_interopRequireDefault","newArray","isLeapYear","week1","disabledHours","setRangeData","startHour","startMinute","endHour","endMinute","normalizeDate","ndate","nranges","nrange","limitedDate","quot","canUseWorkers","canUseEventListeners","attachEvent","canUseViewport","screen","isInWorker","STATIC","ArrayIteratorMethods","COLLECTION_NAME","CollectionPrototype","METHOD_NAME","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","_iterator","_iterator2","_symbol","_symbol2","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","isCancel","promises","spread","PREFERRED_STRING","_ariaUtils","_ariaUtils2","tabEvent","focusFirst","dialogNode","getElementById","lastFocus","trapFocus","removeListeners","127","nativeKeys","FAILS_ON_PRIMITIVES","arrayMethodHasSpeciesSupport","V8_VERSION","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","defineIterator","ARRAY_ITERATOR","setInternalState","createIteratorConstructor","IteratorsCore","BUGGY_SAFARI_ITERATORS","ENTRIES","Iterable","IteratorConstructor","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","buildURL","InterceptorManager","dispatchRequest","interceptors","interceptor","fulfilled","rejected","getUri","CONVERT_TO_STRING","codeAt","isAbsoluteURL","combineURLs","baseURL","requestedURL","RE_NARGS","_util","MTLLoader","setMaterialOptions","materialOptions","delimiter_pattern","materialsInfo","materialCreator","MaterialCreator","setManager","setMaterials","baseUrl","materialsArray","nameLookup","converted","mn","covmat","lprop","normalizeRGB","ignoreZeroRGBs","materialName","getAsArray","createMaterial_","setMapForType","mapType","texParams","getTextureParams","invertTrProperty","matParams","enumerableOnly","_objectSpread2","getOwnPropertyDescriptors","_defineProperties","DEFAULTS","backdrop","navbar","toolbar","inheritedAttributes","initialCoverage","initialViewIndex","keyboard","movable","rotatable","scalable","zoomable","zoomOnTouch","zoomOnWheel","slideOnTouch","toggleOnDblclick","zIndexInline","zoomRatio","minZoomRatio","maxZoomRatio","shown","viewed","rotated","zoomed","IS_BROWSER","WINDOW","IS_TOUCH_DEVICE","HAS_POINTER_EVENT","NAMESPACE","ACTION_MOVE","ACTION_SWITCH","ACTION_ZOOM","CLASS_ACTIVE","CLASS_CLOSE","CLASS_FADE","CLASS_FIXED","CLASS_FULLSCREEN","CLASS_FULLSCREEN_EXIT","CLASS_HIDE","CLASS_HIDE_MD_DOWN","CLASS_HIDE_SM_DOWN","CLASS_HIDE_XS_DOWN","CLASS_IN","CLASS_INVISIBLE","CLASS_LOADING","CLASS_MOVE","CLASS_OPEN","CLASS_SHOW","CLASS_TRANSITION","EVENT_CLICK","EVENT_DBLCLICK","EVENT_DRAG_START","EVENT_FOCUSIN","EVENT_KEY_DOWN","EVENT_LOAD","EVENT_ERROR","EVENT_TOUCH_END","EVENT_TOUCH_MOVE","EVENT_TOUCH_START","EVENT_POINTER_DOWN","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_RESIZE","EVENT_TRANSITION_END","EVENT_WHEEL","EVENT_READY","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_VIEW","EVENT_VIEWED","EVENT_MOVE","EVENT_MOVED","EVENT_ROTATE","EVENT_ROTATED","EVENT_SCALE","EVENT_SCALED","EVENT_ZOOM","EVENT_ZOOMED","EVENT_PLAY","EVENT_STOP","DATA_ACTION","REGEXP_SPACES","BUTTONS","isNumber","isPlainObject","_constructor","REGEXP_SUFFIX","escapeHTMLEntities","hasClass","addClass","removeClass","REGEXP_HYPHENATE","hyphenate","onceSupported","supported","once","removeListener","addListener","_handler","_element$listeners","Event","initCustomEvent","pageXOffset","clientLeft","pageYOffset","clientTop","getTransforms","WebkitTransform","getImageNameFromURL","IS_SAFARI","getImageNaturalSizes","newImage","naturalWidth","naturalHeight","getResponsiveClass","getMaxZoomRatio","pointers","pointers2","ratios","pointer","pointerId","pointer2","endX","endY","ratio","getPointer","endOnly","getPointersCenter","initContainer","initViewer","initList","renderViewer","initBody","scrollbarWidth","initialBodyPaddingRight","initialBodyComputedPaddingRight","containerData","viewerData","fulled","viewer","getImageURL","outerWidth","resetList","initImage","sizingImage","viewerWidth","viewerHeight","oldImageData","imageData","imageInitializing","oldRatio","initialImageData","renderImage","viewing","moving","rotating","scaling","zooming","onTransitionEnd","imageRendering","resetImage","onPointerDown","pointerdown","onPointerMove","pointermove","onPointerUp","pointerup","onKeyDown","onResize","onWheel","wheel","onDblclick","dblclick","localName","isTrusted","clickCanvasTimeout","played","exit","full","doubleClickImageTimeout","originalImage","parentHeight","filled","charCode","playing","buttons","showing","identifier","isSwitchable","imageClicked","isShown","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","player","wheeling","deltaY","build","transitioning","initialOffsetWidth","hideImmediately","onViewerTransitionEnd","onImageTransitionEnd","zoomTo","onViewed","maxIndex","_originalEvent","oldX","oldY","rotateTo","oldDegree","_scaleX","_scaleY","oldScaleX","oldScaleY","pivot","_zoomable","newWidth","newHeight","onLoadWhenPlay","requestFullscreen","referrerPolicy","exitFullscreen","enforceFocus","clearEnforceFocus","tooltipBox","tooltipping","fading","isImg","changedIndexes","changedIndex","delaying","initializing","others","onFocusin","fucus","webkitRequestFullscreen","ALLOW_KEYBOARD_INPUT","mozRequestFullScreen","msRequestFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","absoluteOffsetX","AnotherViewer","Viewer","getUniqueID","zoomButtons","rotateButtons","scaleButtons","rotates","$find","FIND","SKIPS_HOLES","newPromiseCapability","promiseCapability","eject","nativeDefineProperty","nativePropertyIsEnumerable","NASHORN_BUG","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","cloneIfNecessary","optionsArgument","deepmerge","defaultArrayMerge","mergeObject","sourceIsArray","targetIsArray","arrayMerge","sourceAndTargetTypesMatch","deepmerge_1","propertyKey","76","9","noTrailing","debounceMode","timeoutID","lastExec","elapsed","endPos","normalizeArray","allowAboveRoot","basename","matchedSlash","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","delimiter","dirname","code","hasRoot","ext","extname","startDot","startPart","preDotState","$filter","HAS_SPECIES_SUPPORT","RE","UNSUPPORTED_Y","BROKEN_CARET","formats","arrayPrefixGenerators","brackets","comma","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","allowDots","charset","charsetSentinel","encoder","encodeValuesOnly","formatters","serializeDate","skipNulls","strictNullHandling","isNonNullishPrimitive","generateArrayPrefix","maybeMap","keyValue","objKeys","keyPrefix","normalizeStringifyOptions","arrayFormat","joined","originalArray","86","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","TO_PRIMITIVE","ObjectPrototype","$Symbol","$stringify","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","isSymbol","$defineProperty","$defineProperties","$getOwnPropertySymbols","$propertyIsEnumerable","$create","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","useSetter","useSimple","FORCED_JSON_STRINGIFY","$replacer","_assign","_assign2","thisNumberValue","nativeToFixed","dataToString","fractionDigits","fractDigits","RangeError","object_pattern","material_library_pattern","material_use_pattern","map_use_pattern","ParserState","materialLibraries","startObject","fromDeclaration","previousMaterial","currentMaterial","_finalize","hasNormalIndices","hasUVIndices","smooth","startMaterial","previous","inherited","mtllib","groupEnd","lastMultiMaterial","mi","declared","finalize","parseVertexIndex","parseNormalIndex","parseUVIndex","addVertexPoint","addVertexLine","addNormal","addFaceNormal","addColor","addDefaultUV","addUVLine","ua","ub","uc","na","nb","nc","vLen","ic","nLen","uvLen","addPointGeometry","vi","addLineGeometry","uvi","OBJLoader","lineFirstChar","lineLength","trimLeft","lineData","vertexData","faceVertices","vertexParts","lineParts","lineVertices","lineUVs","li","llen","pointData","hasVertexColors","createdMaterials","miLen","sourceMaterial","materialHash","materialPoints","materialLine","99","ArrayPrototype","check","globalThis","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","fastKey","getWeak","onFreeze","NEED","PopupManager","_vue","_vue2","_merge","_merge2","_popupManager","_popupManager2","_scrollbarWidth","_scrollbarWidth2","_dom","idSeed","scrollBarWidth","modalClass","beforeMount","_popupId","deregister","closeModal","bodyPaddingRight","computedBodyPaddingRight","withoutHiddenClass","_opening","_closeTimer","_openTimer","doOpen","willOpen","openModal","bodyHasOverflow","bodyOverflowY","onOpen","doAfterOpen","willClose","classofRaw","CORRECT_ARGUMENTS","arrayLikeToArray","require","defer","port","IS_IOS","IS_NODE","location","setImmediate","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","run","runner","protocol","port2","port1","importScripts","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","normalizeWheel","sX","sY","pX","pY","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaX","deltaMode","spinX","getEventType","applyMixin","mixin","vuexInit","_init","$store","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","targetState","replaceState","subscribe","mutation","subscribeAction","deepCopy","forEachValue","isPromise","partial","Module","rawModule","runtime","_children","_rawModule","rawState","prototypeAccessors","namespaced","addChild","hasChild","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","targetModule","newModule","getNamespace","rawChildModule","unregister","isRegistered","strict","_committing","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","payload","installModule","resetStoreVM","useDevtools","devtools","prototypeAccessors$1","genericSubscribe","subs","resetStore","hot","oldVm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","local","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","noNamespace","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","rootGetters","rawGetter","sync","_Vue","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","isValidMap","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","maxLength","OrbitControls","minDistance","minZoom","maxZoom","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","screenSpacePanning","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","BOTTOM","mouseButtons","ONE","TWO","target0","position0","zoom0","getPolarAngle","spherical","getAzimuthalAngle","saveState","changeEvent","quat","quatInverse","lastPosition","lastQuaternion","rotateLeft","getAutoRotationAngle","sphericalDelta","panOffset","zoomChanged","onContextMenu","onMouseDown","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onMouseMove","onMouseUp","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","targetDistance","dollyOut","dollyScale","dollyIn","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","handleTouchStartRotate","handleTouchStartPan","handleTouchStartDolly","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveRotate","handleTouchMovePan","handleTouchMoveDolly","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","handleTouchEnd","mouseAction","metaKey","MapControls","isInContainer","getScrollContainer","isScroll","isServer","SPECIAL_CHARS_REGEXP","MOZ_HACK_REGEXP","ieVersion","camelCase","letter","detachEvent","cls","curClass","clsName","styleName","determinedDirection","removeResizeListener","addResizeListener","_resizeObserverPolyfill","_resizeObserverPolyfill2","resizeHandler","_isArray","__resizeListeners__","__ro__","hexTable","compactQueue","compacted","arrayToObject","plainObjects","allowPrototypes","mergeTarget","targetItem","strWithoutPlus","unescape","defaultEncoder","RFC1738","compact","refs","mapped","jWeixin","onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ","onMenuShareWeibo","onMenuShareQZone","previewImage","getLocation","openProductSpecificView","addCard","openCard","chooseWXPay","openEnterpriseRedPacket","startSearchBeacons","stopSearchBeacons","onSearchBeacons","consumeAndShareCard","openAddress","platform","initStartTime","initEndTime","preVerifyStartTime","preVerifyEndTime","appId","initTime","preVerifyTime","networkType","isPreVerifyOk","systemType","clientVersion","_completes","verifyJsApiList","jsApiList","verifyOpenTagList","openTagList","_complete","fail","_fail","getNetworkType","isInnerInvoke","invoke","WeixinJSBridge","checkJsApi","checkResult","desc","img_url","imgUrl","data_url","dataUrl","updateTimelineShareData","updateAppMessageShareData","startRecord","stopRecord","onVoiceRecordEnd","playVoice","localId","pauseVoice","stopVoice","onVoicePlayEnd","uploadVoice","isShowProgressTips","downloadVoice","serverId","translateVoice","chooseImage","sizeType","localIds","uploadImage","downloadImage","getLocalImgData","errMsg","subtype","openLocation","latitude","longitude","address","infoUrl","hideOptionMenu","showOptionMenu","closeWindow","hideMenuItems","menuList","showMenuItems","hideAllNonBaseMenuItem","showAllNonBaseMenuItem","scanQRCode","needResult","scanType","resultStr","scan_code","scan_result","postalCode","addressPostalCode","provinceName","proviceFirstStageName","cityName","addressCitySecondStageName","countryName","addressCountiesThirdStageName","detailInfo","addressDetailInfo","productId","view_type","viewType","ext_info","extInfo","cardList","card_id","cardId","card_ext","cardExt","card_list","isSuccess","is_succ","chooseCard","app_id","location_id","shopId","sign_type","signType","card_type","cardType","card_sign","cardSign","time_stamp","nonce_str","nonceStr","choose_card_info","consumedCardId","consumedCode","ticket","openEnterpriseChat","useridlist","userIds","chatname","groupName","launchMiniProgram","targetAppId","envVersion","openBusinessView","businessType","extraData","miniProgram","navigateBack","navigateTo","redirectTo","switchTab","reLaunch","getEnv","miniprogram","__wxjs_environment","localData","verifyAppId","verifySignType","verifyTimestamp","verifyNonceStr","verifySignature","signature","package","paySign","errCode","err_code","err_desc","err_detail","err_msg","119","IS_WRAP","virtual","RGBELoader","RGBE_RETURN_FAILURE","rgbe_read_error","rgbe_write_error","rgbe_format_error","rgbe_memory_error","rgbe_error","rgbe_error_code","RGBE_VALID_PROGRAMTYPE","RGBE_VALID_FORMAT","RGBE_VALID_DIMENSIONS","NEWLINE","fgets","lineLimit","consume","chunkSize","chunk","RGBE_ReadHeader","magic_token_re","gamma_re","exposure_re","format_re","dimensions_re","comments","programtype","gamma","exposure","RGBE_ReadPixels_RLE","data_rgba","byteValue","scanline_buffer","ptr_end","isEncodedRun","rgbeStart","scanline_width","num_scanlines","RGBEByteToRGBFloat","sourceOffset","destArray","destOffset","RGBEByteToRGBHalf","floatView","int32View","toHalf","byteArray","rgbe_header_info","image_rgba_data","numElements","floatArray","halfArray","setDataType","onLoadCallback","CORRECT_PROTOTYPE_GETTER","outer","widthNoScroll","inner","widthWithScroll","FunctionPrototype","FunctionPrototypeToString","nameRE","inheritIfRequired","getFlags","stickyHelpers","setSpecies","NativeRegExp","RegExpPrototype","CORRECT_NEW","RegExpWrapper","thisIsRegExp","patternIsRegExp","flagsAreUndefined","isStandardBrowserEnv","expires","secure","cookie","toGMTString","error1","error2","$at","ERROR","JS_MD5_NO_WINDOW","WEB_WORKER","NODE_JS","JS_MD5_NO_NODE_JS","versions","COMMON_JS","JS_MD5_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_MD5_NO_ARRAY_BUFFER","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","BASE64_ENCODE_CHAR","blocks","buffer8","JS_MD5_NO_ARRAY_BUFFER_IS_VIEW","createOutputMethod","outputType","Md5","nodeWrap","crypto","eval","Buffer","nodeMethod","createHash","digest","sharedMemory","h0","h1","h2","h3","bytes","hBytes","finalized","hashed","notString","lastByteIndex","arrayBuffer","base64","base64Str","md5","hasModal","hasInitZIndex","getModal","modalDom","doOnModalClick","modalStack","topItem","classArr","getTopPopup","topPopup","condition","encodeReserveRE","encodeReserveReplacer","commaRE","resolveQuery","extraQuery","_parseQuery","parsedQuery","parseQuery","castQueryParamValue","param","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","fullPath","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bKey","bVal","isIncludedRoute","queryIncludes","handleRouteEntered","cbs","enteredCbs","i$1","_isBeingDestroyed","View","routerView","$route","_routerViewCache","inactive","_routerRoot","vnodeData","keepAlive","_directInactive","_inactive","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","prepatch","propsToPass","resolveProps","resolvePath","firstChar","parsePath","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","escaped","modifier","asterisk","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encodeAsterisk","pretty","attachKeys","sensitive","regexpToRegexp","arrayToRegexp","stringToRegexp","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","_normalized","params$1","rawPath","basePath","toTypes","eventTypes","exact","exactPath","exactActiveClass","ariaCurrentValue","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","$hasNormal","navigate","isExactActive","findAnchor","isStatic","aData","handler$1","event$1","aAttrs","altKey","defaultPrevented","installed","isDef","registerInstance","callVal","_parentVnode","_router","util","defineReactive","history","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","compileRouteRegex","alias","redirect","childMatchAs","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedPath","aliasedMatch","aliasedRecord","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","absolutePath","stateCopy","handlePopState","isPop","app","behavior","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","getElementPosition","docEl","docRect","isValidPosition","normalizePosition","normalizeOffset","hashStartsWithNumberRE","scrollTo","supportsPushState","pushState","runQueue","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","resolveAsyncComponents","hasAsync","flatMapComponents","cid","resolvedDef","isESModule","resolved","comp","hasSymbol","called","History","normalizeBase","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","extractGuards","records","guards","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","bindEnterGuard","listen","onReady","errorCb","transitionTo","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","beforeHooks","enterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathname","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","VueRouter","apps","matcher","registerHook","createHref","$once","handleInitialScroll","routeOrError","beforeEach","beforeResolve","afterEach","back","forward","getMatchedComponents","normalizedTo","START_LOCATION","wksExt","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","actualStart","TransformControls","_gizmo","TransformControlsGizmo","_plane","TransformControlsPlane","mouseDownEvent","mouseUpEvent","objectChangeEvent","intersectObjectWithRay","includeInvisible","allIntersections","_tempVector","_tempVector2","_tempQuaternion","_unit","pointStart","pointEnd","rotationAxis","startNorm","endNorm","rotationAngle","cameraQuaternion","cameraScale","parentPosition","parentQuaternion","parentQuaternionInv","parentScale","worldPositionStart","worldQuaternionStart","worldScaleStart","worldPosition","worldQuaternion","worldQuaternionInv","worldScale","positionStart","quaternionStart","scaleStart","pointerLockElement","onPointerHover","pointerHover","pointerDown","pointerMove","pointerUp","planeIntersect","snap","rotationSnap","translationSnap","scaleSnap","ROTATION_SPEED","getMode","setTranslationSnap","setRotationSnap","setScaleSnap","setSpace","isTransformControls","gizmoMaterial","gizmoLineMaterial","matInvisible","matHelper","matRed","matGreen","matBlue","matWhiteTransparent","matYellowTransparent","matCyanTransparent","matMagentaTransparent","matYellow","matLineRed","matLineGreen","matLineBlue","matLineCyan","matLineMagenta","matLineYellow","matLineGray","matLineYellowTransparent","arrowGeometry","scaleHandleGeometry","lineGeometry","TranslateHelperGeometry","gizmoTranslate","XYZ","XY","YZ","XZ","pickerTranslate","helperTranslate","END","DELTA","gizmoRotate","XYZE","helperRotate","AXIS","pickerRotate","gizmoScale","XYZX","XYZY","XYZZ","pickerScale","helperScale","setupGizmo","gizmoMap","gizmo","tempGeometry","tempVector","alignVector","zeroVector","lookAtMatrix","tempQuaternion","tempQuaternion2","identityQuaternion","unitX","unitY","unitZ","handles","AXIS_HIDE_TRESHOLD","PLANE_HIDE_TRESHOLD","AXIS_FLIP_TRESHOLD","showX","showY","showZ","_opacity","_color","isTransformControlsGizmo","dirVector","tempMatrix","isTransformControlsPlane","createWellKnownSymbol","withoutSetter","$map","114","30","element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__","nativeJoin","ES3_STRINGS","_popup","PopperJS","createPopper","appendArrow","onCreate","resetTransformOrigin","forceDestroy","placementMap","appended","iteratorClose","normalizedName","StereoEffect","_stereo","setEyeSeparation","131","7","settle","buildFullPath","parseHeaders","isURLSameOrigin","requestData","requestHeaders","auth","username","password","Authorization","btoa","onreadystatechange","responseURL","responseHeaders","getAllResponseHeaders","responseData","statusText","onabort","ontimeout","timeoutErrorMessage","cookies","xsrfValue","onDownloadProgress","onUploadProgress","cancelToken","74","dotAll","emptyObject","isUndef","isTrue","isFalse","isPrimitive","_toString","isValidArrayIndex","toNumber","makeMap","expectsLowerCase","isReservedAttribute","camelizeRE","capitalize","hyphenateRE","polyfillBind","boundFn","_length","nativeBind","_from","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","productionTip","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","bailRE","_isServer","hasProto","inWeex","WXEnvironment","weexPlatform","UA","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","supportsPassive","isServerRendering","env","VUE_ENV","isNative","_Set","Reflect","Set","Dep","addSub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","asyncFactory","fnContext","fnScopeId","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","arrayProto","arrayMethods","methodsToPatch","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","asRootData","_isVue","defineReactive$$1","customSetter","shallow","childOb","dependArray","del","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","key$1","defaultStrat","normalizeProps","normalizeInject","normalizeDirectives","dirs","def$$1","_base","extends","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","_props","isSameType","expectedTypes","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","copies","textNode","createTextNode","_resolve","seenObjects","_traverse","seen","isA","isFrozen","depId","normalizeEvent","once$$1","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","extractPropsFromVNodeData","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","normalizeScopedSlot","key$2","proxyNormalSlot","renderSlot","bindObject","scopedSlotFn","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_m","_f","_u","_p","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","injections","scopedSlots","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","componentVNodeHooks","hydrating","_isDestroyed","mountedNode","createComponentInstanceForVnode","activeInstance","oldVnode","updateChildComponent","insert","_isMounted","callHook","queueActivatedComponent","activateChildComponent","deactivateChildComponent","hooksToMerge","createComponent","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","abstract","installComponentHooks","_isComponent","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","pre","applyNS","registerDeepBindings","initRender","parentVnode","_renderChildren","_parentListeners","currentRenderingInstance","renderMixin","_render","ensureCtor","errorComp","owners","loadingComp","timerLoading","timerTimeout","forceRender","renderCompleted","getFirstComponentChild","initEvents","_hasHookEvent","updateComponentListeners","remove$1","onceHandler","oldListeners","eventsMixin","hookRE","setActiveInstance","prevActiveInstance","initLifecycle","_watcher","lifecycleMixin","prevEl","prevVnode","restoreActiveInstance","__patch__","_watchers","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","propKeys","_propKeys","isInInactiveTree","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","flushSchedulerQueue","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","expOrFn","isRenderWatcher","user","dirty","deps","newDeps","depIds","newDepIds","cleanupDeps","sharedPropertyDefinition","sourceKey","initProps","initMethods","initData","initComputed","initWatch","propsOptions","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","$delete","uid$3","initMixin","initInternalComponent","vnodeComponentOptions","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","latest","sealed","sealedOptions","initUse","installedPlugins","_installedPlugins","initMixin$1","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","exclude","ref$1","builtInComponents","initGlobalAPI","configDef","observable","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","mergeClassData","renderClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","createElement$1","createComment","newNode","referenceNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","emptyNodeAt","createRmCb","childElm","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","activate","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","firstChild","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","getRawDirName","baseModules","updateAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","updateClass","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","svgContainer","updateDOMProps","oldProps","strCur","shouldUpdateValue","checkVal","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","setProperty","vendorNames","capName","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","_enterCb","appearClass","appearToClass","appearActiveClass","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","_vOptions","onCompositionStart","onCompositionEnd","prevOptions","curOptions","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","prevChildren","rawChildren","transitionData","c$1","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","transitionDuration","_moveCb","_hasMove","newPos","oldPos","platformComponents","_broadcast","flush","head","macrotask","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","task","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","createHTML","forcedStringHTMLMethod","v8","Wrapper","NewTarget","NewTargetPrototype","Result","stopped","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","callFn","PromiseCapability","$$resolve","$$reject","defaultConstructor","foo","isHtmlElement","ELEMENT_NODE","functionToCheck","isDefined","boundariesElement","preventOverflowOrder","flipBehavior","arrowElement","modifiersIgnored","forceAbsolute","Popper","_reference","jquery","isNotDefined","isConfig","_getPosition","_setupEventListeners","getOuterSizes","_display","_visibility","getOppositePlacement","getPopperClientRect","popperOffsets","getArrayKeyIndex","keyToFind","getOffsetParent","offsetParent","getScrollParent","isFixed","is_numeric","getOffsetRect","elementRect","rectTop","getOffsetRectRelativeToCustomParent","parentRect","scrollParent","getSupportedPropertyName","prefixes","toCheck","_removeEventListeners","removeOnDestroy","_originalPlacement","_getOffsets","boundaries","_getBoundaries","runModifiers","updateCallback","classNames","contentType","arrowTagName","arrowClassNames","arrowAttributes","addClassNames","addAttributes","isParentFixed","referenceOffsets","popperRect","updateBound","scrollTarget","offsetParentRect","getScrollTopValue","getScrollLeftValue","ends","modifiersToRun","isModifierRequired","requesting","requested","applyStyle","prefixedProperty","basePlacement","shiftVariation","shiftOffsets","preventOverflow","keepTogether","flip","flipped","placementOpposite","variation","flipOrder","_flip","arrowStyle","altSide","opSide","arrowSize","sideValue","nextSource","keysArray","functionToString","isAxiosError","lineNumber","columnNumber","afterLeaveCallback","18","26","51","59","nativeSlice","fin","isVNode","relativeURL","enhanceError","throwIfCancellationRequested","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","axiosKeys","otherKeys","atBegin","124","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","internalObjectKeys","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","$padStart","WEBKIT_BUG","padStart","53","_select_src_option__WEBPACK_IMPORTED_MODULE_0__","nodeList","startClick","createDocumentHandler","mouseup","bindingFn","documentHandler","postfix","pipe","URLSearchParams","product","assignValue","thisArg","EXISTS","oldPaddingTop","paddingTop","oldPaddingBottom","paddingBottom","gOPN","nestRE","mergeFn","objs","bb","nestedKey","isKorean","reg","charsAdded","strCopy","offsetParents","viewRectTop","viewRectBottom","returnMethod","percentTwenties","Format","RFC3986","83","originURL","msie","urlParsingNode","hostname","requestURL","__WEBPACK_EXTERNAL_MODULE_0__","__WEBPACK_EXTERNAL_MODULE_2__","extended","__WEBPACK_IMPORTED_MODULE_0_viewerjs__","__WEBPACK_IMPORTED_MODULE_0_viewerjs___default","__WEBPACK_IMPORTED_MODULE_1__utils__","__WEBPACK_IMPORTED_MODULE_2_vue__","__WEBPACK_IMPORTED_MODULE_2_vue___default","api","_ref$images","_ref$options","ViewerToken","$viewer","__WEBPACK_IMPORTED_MODULE_1_throttle_debounce__","_ref$name","_ref$debug","createViewer","rebuild","imageDiff","destroyViewer","imageContent","viewerImageText","__viewerImageDiffCache","createObserver","debouncedCreateViewer","destroyObserver","MozMutationObserver","__viewerMutationObserver","simplePathRE","__viewerUnwatch","destroyWatcher","_console","static","Component","esModule","__WEBPACK_IMPORTED_MODULE_0__utils__","__WEBPACK_IMPORTED_MODULE_1_viewerjs__","__WEBPACK_IMPORTED_MODULE_1_viewerjs___default","__WEBPACK_IMPORTED_MODULE_2__component_vue__","__WEBPACK_IMPORTED_MODULE_2__component_vue___default","__WEBPACK_IMPORTED_MODULE_3__directive__","__WEBPACK_IMPORTED_MODULE_4__api__","defaultOptions","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","clearExistingTimeout","arguments_","rebuildViewer","updateViewer","rawScriptExports","compiledTemplate","cssModules","arch","execPath","browser","argv","chdir","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","arrayEquals","kebabCase","autoprefixer","coerceTruthyValueToArray","arrayFind","arrayFindIndex","escapeRegexpString","generateId","getValueByPath","getPropByPath","rafThrottle","objToArray","_types","tempObj","keyArr","arrayA","arrayB","_zhCN","_zhCN2","_deepmerge","_deepmerge2","_format2","lang","i18nHandler","vuei18n","$t","DeviceOrientationControls","deviceOrientation","screenOrientation","alphaOffset","onDeviceOrientationChangeEvent","onScreenOrientationChangeEvent","orientation","setObjectQuaternion","zee","q0","beta","orient","DeviceOrientationEvent","requestPermission","device","nativeMatch","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","redefineAll","anInstance","iterate","microtask","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","GLOBAL_CORE_JS_PROMISE","FakePromise","isThenable","isReject","notified","reactions","exited","reaction","rejection","onHandleUnhandled","onUnhandled","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","onFulfilled","onRejected","capability","$promiseResolve","alreadyCalled","race","STRING_ITERATOR","__webpack_amd_options__","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","$JSON","_stringify","SymbolRegistry","OPSymbols","USE_NATIVE","setSymbolDesc","protoDesc","IS_OP","es6Symbols","wellKnownSymbols","feature","detection","POLYFILL","NATIVE","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","parseArrayValue","isoSentinel","parseValues","cleanStr","skipIndex","part","bracketEqualsPos","encodedVal","valuesParsed","cleanRoot","parseKeys","givenKey","normalizeParseOptions","newObj","$findIndex","FIND_INDEX","notARegExp","correctIsRegExpLogic","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","IS_END","fillString","fillLen","stringFiller","stringLength","fillStr","intMaxLength"],"mappings":"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U,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAInB,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SAIn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","file":"js/chunk-vendors.c8abf68b.js","sourcesContent":["'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","// tween.js 17.3.5 - https://github.com/tweenjs/tween.js\nvar _Group=function(){this._tweens={},this._tweensAddedDuringUpdate={}};_Group.prototype={getAll:function(){return Object.keys(this._tweens).map(function(t){return this._tweens[t]}.bind(this))},removeAll:function(){this._tweens={}},add:function(t){this._tweens[t.getId()]=t,this._tweensAddedDuringUpdate[t.getId()]=t},remove:function(t){delete this._tweens[t.getId()],delete this._tweensAddedDuringUpdate[t.getId()]},update:function(t,n){var e=Object.keys(this._tweens);if(0===e.length)return!1;for(t=void 0!==t?t:TWEEN.now();0 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '117';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst FrontFaceDirectionCW = 0;\nconst FrontFaceDirectionCCW = 1;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst Uncharted2ToneMapping = 3;\nconst CineonToneMapping = 4;\nconst ACESFilmicToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst SphericalReflectionMapping = 305;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\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\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\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\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, 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\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\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\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\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\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\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\t\t\tvar normalized = attribute.normalized;\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, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\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\tconst scope = this;\n\n\t\twidth = width || 1;\n\t\theight = height || 1;\n\t\tdepth = depth || 1;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\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 = Object.assign( {}, 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, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar currentXrEnabled = renderer.xr.enabled;\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\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\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\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\"#include \",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV = equirectUv( direction );\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\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, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\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}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#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 = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#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 = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform 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\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\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 mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\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, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\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 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\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\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};\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, materials, 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\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\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\tvar instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\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._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\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._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\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\tconst compiled = {};\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( material2.uuid in compiled === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled[ material2.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 ( material.uuid in compiled === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled[ 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\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\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.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( 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\tclone: function () {\n\n\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < this.count; i ++ ) {\n\n\t\t\tvar index = i * this.data.stride + this.offset;\n\n\t\t\tfor ( var j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < this.count; i ++ ) {\n\n\t\t\tvar index = i * this.data.stride + this.offset;\n\n\t\t\tfor ( var j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: array,\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\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.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\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\tthis.updateMorphTargets();\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\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.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\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\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\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\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\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} );\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\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\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\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\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.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\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\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\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 scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tvar context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\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\t\tvar endIndex = startIndex + this.valueSize;\n\n\t\tfor ( var i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tvar startIndex = this._origIndex * this.valueSize;\n\t\tvar targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( var i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( 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\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\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\n\t\tfor ( var i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\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\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\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 tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\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\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\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\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\tvar mesh = 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( mesh, _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 blurMesh = 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( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\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#include \n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv = equirectUv( outputDirection );\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\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;\n\n// RH coordinate system; PMREM face-indexing convention\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t} else if (face == 2.0) {\n\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t} else if (face == 5.0) {\n\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t}\n\treturn direction;\n}\n\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn `\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t`;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\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( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t}\n\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","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex -- safe\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nimport {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tLoader\n} from \"../../../build/three.module.js\";\n\nvar DRACOLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.decoderPath = '';\n\tthis.decoderConfig = {};\n\tthis.decoderBinary = null;\n\tthis.decoderPending = null;\n\n\tthis.workerLimit = 4;\n\tthis.workerPool = [];\n\tthis.workerNextTaskID = 1;\n\tthis.workerSourceURL = '';\n\n\tthis.defaultAttributeIDs = {\n\t\tposition: 'POSITION',\n\t\tnormal: 'NORMAL',\n\t\tcolor: 'COLOR',\n\t\tuv: 'TEX_COORD'\n\t};\n\tthis.defaultAttributeTypes = {\n\t\tposition: 'Float32Array',\n\t\tnormal: 'Float32Array',\n\t\tcolor: 'Float32Array',\n\t\tuv: 'Float32Array'\n\t};\n\n};\n\nDRACOLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DRACOLoader,\n\n\tsetDecoderPath: function ( path ) {\n\n\t\tthis.decoderPath = path;\n\n\t\treturn this;\n\n\t},\n\n\tsetDecoderConfig: function ( config ) {\n\n\t\tthis.decoderConfig = config;\n\n\t\treturn this;\n\n\t},\n\n\tsetWorkerLimit: function ( workerLimit ) {\n\n\t\tthis.workerLimit = workerLimit;\n\n\t\treturn this;\n\n\t},\n\n\t/** @deprecated */\n\tsetVerbosity: function () {\n\n\t\tconsole.warn( 'THREE.DRACOLoader: The .setVerbosity() method has been removed.' );\n\n\t},\n\n\t/** @deprecated */\n\tsetDrawMode: function () {\n\n\t\tconsole.warn( 'THREE.DRACOLoader: The .setDrawMode() method has been removed.' );\n\n\t},\n\n\t/** @deprecated */\n\tsetSkipDequantization: function () {\n\n\t\tconsole.warn( 'THREE.DRACOLoader: The .setSkipDequantization() method has been removed.' );\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.crossOrigin === 'use-credentials' ) {\n\n\t\t\tloader.setWithCredentials( true );\n\n\t\t}\n\n\t\tloader.load( url, ( buffer ) => {\n\n\t\t\tvar taskConfig = {\n\t\t\t\tattributeIDs: this.defaultAttributeIDs,\n\t\t\t\tattributeTypes: this.defaultAttributeTypes,\n\t\t\t\tuseUniqueIDs: false\n\t\t\t};\n\n\t\t\tthis.decodeGeometry( buffer, taskConfig )\n\t\t\t\t.then( onLoad )\n\t\t\t\t.catch( onError );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\t/** @deprecated Kept for backward-compatibility with previous DRACOLoader versions. */\n\tdecodeDracoFile: function ( buffer, callback, attributeIDs, attributeTypes ) {\n\n\t\tvar taskConfig = {\n\t\t\tattributeIDs: attributeIDs || this.defaultAttributeIDs,\n\t\t\tattributeTypes: attributeTypes || this.defaultAttributeTypes,\n\t\t\tuseUniqueIDs: !! attributeIDs\n\t\t};\n\n\t\tthis.decodeGeometry( buffer, taskConfig ).then( callback );\n\n\t},\n\n\tdecodeGeometry: function ( buffer, taskConfig ) {\n\n\t\t// TODO: For backward-compatibility, support 'attributeTypes' objects containing\n\t\t// references (rather than names) to typed array constructors. These must be\n\t\t// serialized before sending them to the worker.\n\t\tfor ( var attribute in taskConfig.attributeTypes ) {\n\n\t\t\tvar type = taskConfig.attributeTypes[ attribute ];\n\n\t\t\tif ( type.BYTES_PER_ELEMENT !== undefined ) {\n\n\t\t\t\ttaskConfig.attributeTypes[ attribute ] = type.name;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar taskKey = JSON.stringify( taskConfig );\n\n\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t// again from this thread.\n\t\tif ( DRACOLoader.taskCache.has( buffer ) ) {\n\n\t\t\tvar cachedTask = DRACOLoader.taskCache.get( buffer );\n\n\t\t\tif ( cachedTask.key === taskKey ) {\n\n\t\t\t\treturn cachedTask.promise;\n\n\t\t\t} else if ( buffer.byteLength === 0 ) {\n\n\t\t\t\t// Technically, it would be possible to wait for the previous task to complete,\n\t\t\t\t// transfer the buffer back, and decode again with the second configuration. That\n\t\t\t\t// is complex, and I don't know of any reason to decode a Draco buffer twice in\n\t\t\t\t// different ways, so this is left unimplemented.\n\t\t\t\tthrow new Error(\n\n\t\t\t\t\t'THREE.DRACOLoader: Unable to re-decode a buffer with different ' +\n\t\t\t\t\t'settings. Buffer has already been transferred.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar worker;\n\t\tvar taskID = this.workerNextTaskID ++;\n\t\tvar taskCost = buffer.byteLength;\n\n\t\t// Obtain a worker and assign a task, and construct a geometry instance\n\t\t// when the task completes.\n\t\tvar geometryPending = this._getWorker( taskID, taskCost )\n\t\t\t.then( ( _worker ) => {\n\n\t\t\t\tworker = _worker;\n\n\t\t\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\t\t\tworker._callbacks[ taskID ] = { resolve, reject };\n\n\t\t\t\t\tworker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.then( ( message ) => this._createGeometry( message.geometry ) );\n\n\t\t// Remove task from the task list.\n\t\t// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\t\tgeometryPending\n\t\t\t.catch( () => true )\n\t\t\t.then( () => {\n\n\t\t\t\tif ( worker && taskID ) {\n\n\t\t\t\t\tthis._releaseTask( worker, taskID );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t// Cache the task result.\n\t\tDRACOLoader.taskCache.set( buffer, {\n\n\t\t\tkey: taskKey,\n\t\t\tpromise: geometryPending\n\n\t\t} );\n\n\t\treturn geometryPending;\n\n\t},\n\n\t_createGeometry: function ( geometryData ) {\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tif ( geometryData.index ) {\n\n\t\t\tgeometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < geometryData.attributes.length; i ++ ) {\n\n\t\t\tvar attribute = geometryData.attributes[ i ];\n\t\t\tvar name = attribute.name;\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tgeometry.setAttribute( name, new BufferAttribute( array, itemSize ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t},\n\n\t_loadLibrary: function ( url, responseType ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.decoderPath );\n\t\tloader.setResponseType( responseType );\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\tloader.load( url, resolve, undefined, reject );\n\n\t\t} );\n\n\t},\n\n\tpreload: function () {\n\n\t\tthis._initDecoder();\n\n\t\treturn this;\n\n\t},\n\n\t_initDecoder: function () {\n\n\t\tif ( this.decoderPending ) return this.decoderPending;\n\n\t\tvar useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n\t\tvar librariesPending = [];\n\n\t\tif ( useJS ) {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );\n\n\t\t} else {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) );\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) );\n\n\t\t}\n\n\t\tthis.decoderPending = Promise.all( librariesPending )\n\t\t\t.then( ( libraries ) => {\n\n\t\t\t\tvar jsContent = libraries[ 0 ];\n\n\t\t\t\tif ( ! useJS ) {\n\n\t\t\t\t\tthis.decoderConfig.wasmBinary = libraries[ 1 ];\n\n\t\t\t\t}\n\n\t\t\t\tvar fn = DRACOLoader.DRACOWorker.toString();\n\n\t\t\t\tvar body = [\n\t\t\t\t\t'/* draco decoder */',\n\t\t\t\t\tjsContent,\n\t\t\t\t\t'',\n\t\t\t\t\t'/* worker */',\n\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\n\t\t\t} );\n\n\t\treturn this.decoderPending;\n\n\t},\n\n\t_getWorker: function ( taskID, taskCost ) {\n\n\t\treturn this._initDecoder().then( () => {\n\n\t\t\tif ( this.workerPool.length < this.workerLimit ) {\n\n\t\t\t\tvar worker = new Worker( this.workerSourceURL );\n\n\t\t\t\tworker._callbacks = {};\n\t\t\t\tworker._taskCosts = {};\n\t\t\t\tworker._taskLoad = 0;\n\n\t\t\t\tworker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } );\n\n\t\t\t\tworker.onmessage = function ( e ) {\n\n\t\t\t\t\tvar message = e.data;\n\n\t\t\t\t\tswitch ( message.type ) {\n\n\t\t\t\t\t\tcase 'decode':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].resolve( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'error':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].reject( message );\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.DRACOLoader: Unexpected message, \"' + message.type + '\"' );\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\tthis.workerPool.push( worker );\n\n\t\t\t} else {\n\n\t\t\t\tthis.workerPool.sort( function ( a, b ) {\n\n\t\t\t\t\treturn a._taskLoad > b._taskLoad ? - 1 : 1;\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tvar worker = this.workerPool[ this.workerPool.length - 1 ];\n\t\t\tworker._taskCosts[ taskID ] = taskCost;\n\t\t\tworker._taskLoad += taskCost;\n\t\t\treturn worker;\n\n\t\t} );\n\n\t},\n\n\t_releaseTask: function ( worker, taskID ) {\n\n\t\tworker._taskLoad -= worker._taskCosts[ taskID ];\n\t\tdelete worker._callbacks[ taskID ];\n\t\tdelete worker._taskCosts[ taskID ];\n\n\t},\n\n\tdebug: function () {\n\n\t\tconsole.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );\n\n\t},\n\n\tdispose: function () {\n\n\t\tfor ( var i = 0; i < this.workerPool.length; ++ i ) {\n\n\t\t\tthis.workerPool[ i ].terminate();\n\n\t\t}\n\n\t\tthis.workerPool.length = 0;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/* WEB WORKER */\n\nDRACOLoader.DRACOWorker = function () {\n\n\tvar decoderConfig;\n\tvar decoderPending;\n\n\tonmessage = function ( e ) {\n\n\t\tvar message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tdecoderConfig = message.decoderConfig;\n\t\t\t\tdecoderPending = new Promise( function ( resolve/*, reject*/ ) {\n\n\t\t\t\t\tdecoderConfig.onModuleLoaded = function ( draco ) {\n\n\t\t\t\t\t\t// Module is Promise-like. Wrap before resolving to avoid loop.\n\t\t\t\t\t\tresolve( { draco: draco } );\n\n\t\t\t\t\t};\n\n\t\t\t\t\tDracoDecoderModule( decoderConfig );\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'decode':\n\t\t\t\tvar buffer = message.buffer;\n\t\t\t\tvar taskConfig = message.taskConfig;\n\t\t\t\tdecoderPending.then( ( module ) => {\n\n\t\t\t\t\tvar draco = module.draco;\n\t\t\t\t\tvar decoder = new draco.Decoder();\n\t\t\t\t\tvar decoderBuffer = new draco.DecoderBuffer();\n\t\t\t\t\tdecoderBuffer.Init( new Int8Array( buffer ), buffer.byteLength );\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tvar geometry = decodeGeometry( draco, decoder, decoderBuffer, taskConfig );\n\n\t\t\t\t\t\tvar buffers = geometry.attributes.map( ( attr ) => attr.array.buffer );\n\n\t\t\t\t\t\tif ( geometry.index ) buffers.push( geometry.index.array.buffer );\n\n\t\t\t\t\t\tself.postMessage( { type: 'decode', id: message.id, geometry }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t} finally {\n\n\t\t\t\t\t\tdraco.destroy( decoderBuffer );\n\t\t\t\t\t\tdraco.destroy( decoder );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t};\n\n\tfunction decodeGeometry( draco, decoder, decoderBuffer, taskConfig ) {\n\n\t\tvar attributeIDs = taskConfig.attributeIDs;\n\t\tvar attributeTypes = taskConfig.attributeTypes;\n\n\t\tvar dracoGeometry;\n\t\tvar decodingStatus;\n\n\t\tvar geometryType = decoder.GetEncodedGeometryType( decoderBuffer );\n\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tdracoGeometry = new draco.Mesh();\n\t\t\tdecodingStatus = decoder.DecodeBufferToMesh( decoderBuffer, dracoGeometry );\n\n\t\t} else if ( geometryType === draco.POINT_CLOUD ) {\n\n\t\t\tdracoGeometry = new draco.PointCloud();\n\t\t\tdecodingStatus = decoder.DecodeBufferToPointCloud( decoderBuffer, dracoGeometry );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected geometry type.' );\n\n\t\t}\n\n\t\tif ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() );\n\n\t\t}\n\n\t\tvar geometry = { index: null, attributes: [] };\n\n\t\t// Gather all vertex attributes.\n\t\tfor ( var attributeName in attributeIDs ) {\n\n\t\t\tvar attributeType = self[ attributeTypes[ attributeName ] ];\n\n\t\t\tvar attribute;\n\t\t\tvar attributeID;\n\n\t\t\t// A Draco file may be created with default vertex attributes, whose attribute IDs\n\t\t\t// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n\t\t\t// a Draco file may contain a custom set of attributes, identified by known unique\n\t\t\t// IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\t\t\tif ( taskConfig.useUniqueIDs ) {\n\n\t\t\t\tattributeID = attributeIDs[ attributeName ];\n\t\t\t\tattribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID );\n\n\t\t\t} else {\n\n\t\t\t\tattributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] );\n\n\t\t\t\tif ( attributeID === - 1 ) continue;\n\n\t\t\t\tattribute = decoder.GetAttribute( dracoGeometry, attributeID );\n\n\t\t\t}\n\n\t\t\tgeometry.attributes.push( decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) );\n\n\t\t}\n\n\t\t// Add index.\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\t// Generate mesh faces.\n\t\t\tvar numFaces = dracoGeometry.num_faces();\n\t\t\tvar numIndices = numFaces * 3;\n\t\t\tvar index = new Uint32Array( numIndices );\n\t\t\tvar indexArray = new draco.DracoInt32Array();\n\n\t\t\tfor ( var i = 0; i < numFaces; ++ i ) {\n\n\t\t\t\tdecoder.GetFaceFromMesh( dracoGeometry, i, indexArray );\n\n\t\t\t\tfor ( var j = 0; j < 3; ++ j ) {\n\n\t\t\t\t\tindex[ i * 3 + j ] = indexArray.GetValue( j );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.index = { array: index, itemSize: 1 };\n\n\t\t\tdraco.destroy( indexArray );\n\n\t\t}\n\n\t\tdraco.destroy( dracoGeometry );\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) {\n\n\t\tvar numComponents = attribute.num_components();\n\t\tvar numPoints = dracoGeometry.num_points();\n\t\tvar numValues = numPoints * numComponents;\n\t\tvar dracoArray;\n\n\t\tvar array;\n\n\t\tswitch ( attributeType ) {\n\n\t\t\tcase Float32Array:\n\t\t\t\tdracoArray = new draco.DracoFloat32Array();\n\t\t\t\tdecoder.GetAttributeFloatForAllPoints( dracoGeometry, attribute, dracoArray );\n\t\t\t\tarray = new Float32Array( numValues );\n\t\t\t\tbreak;\n\n\t\t\tcase Int8Array:\n\t\t\t\tdracoArray = new draco.DracoInt8Array();\n\t\t\t\tdecoder.GetAttributeInt8ForAllPoints( dracoGeometry, attribute, dracoArray );\n\t\t\t\tarray = new Int8Array( numValues );\n\t\t\t\tbreak;\n\n\t\t\tcase Int16Array:\n\t\t\t\tdracoArray = new draco.DracoInt16Array();\n\t\t\t\tdecoder.GetAttributeInt16ForAllPoints( dracoGeometry, attribute, dracoArray );\n\t\t\t\tarray = new Int16Array( numValues );\n\t\t\t\tbreak;\n\n\t\t\tcase Int32Array:\n\t\t\t\tdracoArray = new draco.DracoInt32Array();\n\t\t\t\tdecoder.GetAttributeInt32ForAllPoints( dracoGeometry, attribute, dracoArray );\n\t\t\t\tarray = new Int32Array( numValues );\n\t\t\t\tbreak;\n\n\t\t\tcase Uint8Array:\n\t\t\t\tdracoArray = new draco.DracoUInt8Array();\n\t\t\t\tdecoder.GetAttributeUInt8ForAllPoints( dracoGeometry, attribute, dracoArray );\n\t\t\t\tarray = new Uint8Array( numValues );\n\t\t\t\tbreak;\n\n\t\t\tcase Uint16Array:\n\t\t\t\tdracoArray = new draco.DracoUInt16Array();\n\t\t\t\tdecoder.GetAttributeUInt16ForAllPoints( dracoGeometry, attribute, dracoArray );\n\t\t\t\tarray = new Uint16Array( numValues );\n\t\t\t\tbreak;\n\n\t\t\tcase Uint32Array:\n\t\t\t\tdracoArray = new draco.DracoUInt32Array();\n\t\t\t\tdecoder.GetAttributeUInt32ForAllPoints( dracoGeometry, attribute, dracoArray );\n\t\t\t\tarray = new Uint32Array( numValues );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected attribute type.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < numValues; i ++ ) {\n\n\t\t\tarray[ i ] = dracoArray.GetValue( i );\n\n\t\t}\n\n\t\tdraco.destroy( dracoArray );\n\n\t\treturn {\n\t\t\tname: attributeName,\n\t\t\tarray: array,\n\t\t\titemSize: numComponents\n\t\t};\n\n\t}\n\n};\n\nDRACOLoader.taskCache = new WeakMap();\n\n/** Deprecated static methods */\n\n/** @deprecated */\nDRACOLoader.setDecoderPath = function () {\n\n\tconsole.warn( 'THREE.DRACOLoader: The .setDecoderPath() method has been removed. Use instance methods.' );\n\n};\n\n/** @deprecated */\nDRACOLoader.setDecoderConfig = function () {\n\n\tconsole.warn( 'THREE.DRACOLoader: The .setDecoderConfig() method has been removed. Use instance methods.' );\n\n};\n\n/** @deprecated */\nDRACOLoader.releaseDecoderModule = function () {\n\n\tconsole.warn( 'THREE.DRACOLoader: The .releaseDecoderModule() method has been removed. Use instance methods.' );\n\n};\n\n/** @deprecated */\nDRACOLoader.getDecoderModule = function () {\n\n\tconsole.warn( 'THREE.DRACOLoader: The .getDecoderModule() method has been removed. Use instance methods.' );\n\n};\n\nexport { DRACOLoader };\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = false;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","'use strict';\n\nexports.__esModule = true;\nexports.default = {\n el: {\n colorpicker: {\n confirm: '确定',\n clear: '清空'\n },\n datepicker: {\n now: '此刻',\n today: '今天',\n cancel: '取消',\n clear: '清空',\n confirm: '确定',\n selectDate: '选择日期',\n selectTime: '选择时间',\n startDate: '开始日期',\n startTime: '开始时间',\n endDate: '结束日期',\n endTime: '结束时间',\n prevYear: '前一年',\n nextYear: '后一年',\n prevMonth: '上个月',\n nextMonth: '下个月',\n year: '年',\n month1: '1 月',\n month2: '2 月',\n month3: '3 月',\n month4: '4 月',\n month5: '5 月',\n month6: '6 月',\n month7: '7 月',\n month8: '8 月',\n month9: '9 月',\n month10: '10 月',\n month11: '11 月',\n month12: '12 月',\n // week: '周次',\n weeks: {\n sun: '日',\n mon: '一',\n tue: '二',\n wed: '三',\n thu: '四',\n fri: '五',\n sat: '六'\n },\n months: {\n jan: '一月',\n feb: '二月',\n mar: '三月',\n apr: '四月',\n may: '五月',\n jun: '六月',\n jul: '七月',\n aug: '八月',\n sep: '九月',\n oct: '十月',\n nov: '十一月',\n dec: '十二月'\n }\n },\n select: {\n loading: '加载中',\n noMatch: '无匹配数据',\n noData: '无数据',\n placeholder: '请选择'\n },\n cascader: {\n noMatch: '无匹配数据',\n loading: '加载中',\n placeholder: '请选择',\n noData: '暂无数据'\n },\n pagination: {\n goto: '前往',\n pagesize: '条/页',\n total: '共 {total} 条',\n pageClassifier: '页'\n },\n messagebox: {\n title: '提示',\n confirm: '确定',\n cancel: '取消',\n error: '输入的数据不合法!'\n },\n upload: {\n deleteTip: '按 delete 键可删除',\n delete: '删除',\n preview: '查看图片',\n continue: '继续上传'\n },\n table: {\n emptyText: '暂无数据',\n confirmFilter: '筛选',\n resetFilter: '重置',\n clearFilter: '全部',\n sumText: '合计'\n },\n tree: {\n emptyText: '暂无数据'\n },\n transfer: {\n noMatch: '无匹配数据',\n noData: '无数据',\n titles: ['列表 1', '列表 2'],\n filterPlaceholder: '请输入搜索内容',\n noCheckedFormat: '共 {total} 项',\n hasCheckedFormat: '已选 {checked}/{total} 项'\n },\n image: {\n error: '加载失败'\n },\n pageHeader: {\n title: '返回'\n },\n popconfirm: {\n confirmButtonText: '确定',\n cancelButtonText: '取消'\n }\n }\n};","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 61);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 10:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input\");\n\n/***/ }),\n\n/***/ 12:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/clickoutside\");\n\n/***/ }),\n\n/***/ 14:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/scrollbar\");\n\n/***/ }),\n\n/***/ 16:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/resize-event\");\n\n/***/ }),\n\n/***/ 17:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce/debounce\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/shared\");\n\n/***/ }),\n\n/***/ 22:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/focus\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scroll-into-view\");\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=7a44c642&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-dropdown__item\",\n class: {\n selected: _vm.itemSelected,\n \"is-disabled\": _vm.disabled || _vm.groupDisabled || _vm.limitReached,\n hover: _vm.hover\n },\n on: {\n mouseenter: _vm.hoverItem,\n click: function($event) {\n $event.stopPropagation()\n return _vm.selectOptionClick($event)\n }\n }\n },\n [_vm._t(\"default\", [_c(\"span\", [_vm._v(_vm._s(_vm.currentLabel))])])],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=7a44c642&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&\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\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var optionvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOption',\n\n componentName: 'ElOption',\n\n inject: ['select'],\n\n props: {\n value: {\n required: true\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false\n };\n },\n\n\n computed: {\n isObject: function isObject() {\n return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]';\n },\n currentLabel: function currentLabel() {\n return this.label || (this.isObject ? '' : this.value);\n },\n currentValue: function currentValue() {\n return this.value || this.label || '';\n },\n itemSelected: function itemSelected() {\n if (!this.select.multiple) {\n return this.isEqual(this.value, this.select.value);\n } else {\n return this.contains(this.select.value, this.value);\n }\n },\n limitReached: function limitReached() {\n if (this.select.multiple) {\n return !this.itemSelected && (this.select.value || []).length >= this.select.multipleLimit && this.select.multipleLimit > 0;\n } else {\n return false;\n }\n }\n },\n\n watch: {\n currentLabel: function currentLabel() {\n if (!this.created && !this.select.remote) this.dispatch('ElSelect', 'setSelected');\n },\n value: function value(val, oldVal) {\n var _select = this.select,\n remote = _select.remote,\n valueKey = _select.valueKey;\n\n if (!this.created && !remote) {\n if (valueKey && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && (typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) === 'object' && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n this.dispatch('ElSelect', 'setSelected');\n }\n }\n },\n\n methods: {\n isEqual: function isEqual(a, b) {\n if (!this.isObject) {\n return a === b;\n } else {\n var valueKey = this.select.valueKey;\n return Object(util_[\"getValueByPath\"])(a, valueKey) === Object(util_[\"getValueByPath\"])(b, valueKey);\n }\n },\n contains: function contains() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var target = arguments[1];\n\n if (!this.isObject) {\n return arr && arr.indexOf(target) > -1;\n } else {\n var valueKey = this.select.valueKey;\n return arr && arr.some(function (item) {\n return Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(target, valueKey);\n });\n }\n },\n handleGroupDisabled: function handleGroupDisabled(val) {\n this.groupDisabled = val;\n },\n hoverItem: function hoverItem() {\n if (!this.disabled && !this.groupDisabled) {\n this.select.hoverIndex = this.select.options.indexOf(this);\n }\n },\n selectOptionClick: function selectOptionClick() {\n if (this.disabled !== true && this.groupDisabled !== true) {\n this.dispatch('ElSelect', 'handleOptionClick', [this, true]);\n }\n },\n queryChange: function queryChange(query) {\n this.visible = new RegExp(Object(util_[\"escapeRegexpString\"])(query), 'i').test(this.currentLabel) || this.created;\n if (!this.visible) {\n this.select.filteredOptionsCount--;\n }\n }\n },\n\n created: function created() {\n this.select.options.push(this);\n this.select.cachedOptions.push(this);\n this.select.optionsCount++;\n this.select.filteredOptionsCount++;\n\n this.$on('queryChange', this.queryChange);\n this.$on('handleGroupDisabled', this.handleGroupDisabled);\n },\n beforeDestroy: function beforeDestroy() {\n var _select2 = this.select,\n selected = _select2.selected,\n multiple = _select2.multiple;\n\n var selectedOptions = multiple ? selected : [selected];\n var index = this.select.cachedOptions.indexOf(this);\n var selectedIndex = selectedOptions.indexOf(this);\n\n // if option is not selected, remove it from cache\n if (index > -1 && selectedIndex < 0) {\n this.select.cachedOptions.splice(index, 1);\n }\n this.select.onOptionDestroy(this.select.options.indexOf(this));\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_optionvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/option.vue\"\n/* harmony default export */ var src_option = __webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/tag\");\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/vue-popper\");\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/locale\");\n\n/***/ }),\n\n/***/ 61:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleClose,\n expression: \"handleClose\"\n }\n ],\n staticClass: \"el-select\",\n class: [_vm.selectSize ? \"el-select--\" + _vm.selectSize : \"\"],\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.toggleMenu($event)\n }\n }\n },\n [\n _vm.multiple\n ? _c(\n \"div\",\n {\n ref: \"tags\",\n staticClass: \"el-select__tags\",\n style: { \"max-width\": _vm.inputWidth - 32 + \"px\", width: \"100%\" }\n },\n [\n _vm.collapseTags && _vm.selected.length\n ? _c(\n \"span\",\n [\n _c(\n \"el-tag\",\n {\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: _vm.selected[0].hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, _vm.selected[0])\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(_vm.selected[0].currentLabel))\n ])\n ]\n ),\n _vm.selected.length > 1\n ? _c(\n \"el-tag\",\n {\n attrs: {\n closable: false,\n size: _vm.collapseTagSize,\n type: \"info\",\n \"disable-transitions\": \"\"\n }\n },\n [\n _c(\n \"span\",\n { staticClass: \"el-select__tags-text\" },\n [_vm._v(\"+ \" + _vm._s(_vm.selected.length - 1))]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n !_vm.collapseTags\n ? _c(\n \"transition-group\",\n { on: { \"after-leave\": _vm.resetInputHeight } },\n _vm._l(_vm.selected, function(item) {\n return _c(\n \"el-tag\",\n {\n key: _vm.getValueKey(item),\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: item.hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, item)\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(item.currentLabel))\n ])\n ]\n )\n }),\n 1\n )\n : _vm._e(),\n _vm.filterable\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.query,\n expression: \"query\"\n }\n ],\n ref: \"input\",\n staticClass: \"el-select__input\",\n class: [_vm.selectSize ? \"is-\" + _vm.selectSize : \"\"],\n style: {\n \"flex-grow\": \"1\",\n width: _vm.inputLength / (_vm.inputWidth - 32) + \"%\",\n \"max-width\": _vm.inputWidth - 42 + \"px\"\n },\n attrs: {\n type: \"text\",\n disabled: _vm.selectDisabled,\n autocomplete: _vm.autoComplete || _vm.autocomplete\n },\n domProps: { value: _vm.query },\n on: {\n focus: _vm.handleFocus,\n blur: function($event) {\n _vm.softFocus = false\n },\n keyup: _vm.managePlaceholder,\n keydown: [\n _vm.resetInputState,\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.navigateOptions(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.navigateOptions(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"delete\",\n [8, 46],\n $event.key,\n [\"Backspace\", \"Delete\", \"Del\"]\n )\n ) {\n return null\n }\n return _vm.deletePrevTag($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n compositionstart: _vm.handleComposition,\n compositionupdate: _vm.handleComposition,\n compositionend: _vm.handleComposition,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.query = $event.target.value\n },\n _vm.debouncedQueryChange\n ]\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-input\",\n {\n ref: \"reference\",\n class: { \"is-focus\": _vm.visible },\n attrs: {\n type: \"text\",\n placeholder: _vm.currentPlaceholder,\n name: _vm.name,\n id: _vm.id,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n size: _vm.selectSize,\n disabled: _vm.selectDisabled,\n readonly: _vm.readonly,\n \"validate-event\": false,\n tabindex: _vm.multiple && _vm.filterable ? \"-1\" : null\n },\n on: { focus: _vm.handleFocus, blur: _vm.handleBlur },\n nativeOn: {\n keyup: function($event) {\n return _vm.debouncedOnInputChange($event)\n },\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.navigateOptions(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.navigateOptions(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n paste: function($event) {\n return _vm.debouncedOnInputChange($event)\n },\n mouseenter: function($event) {\n _vm.inputHovering = true\n },\n mouseleave: function($event) {\n _vm.inputHovering = false\n }\n },\n model: {\n value: _vm.selectedLabel,\n callback: function($$v) {\n _vm.selectedLabel = $$v\n },\n expression: \"selectedLabel\"\n }\n },\n [\n _vm.$slots.prefix\n ? _c(\"template\", { slot: \"prefix\" }, [_vm._t(\"prefix\")], 2)\n : _vm._e(),\n _c(\"template\", { slot: \"suffix\" }, [\n _c(\"i\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.showClose,\n expression: \"!showClose\"\n }\n ],\n class: [\n \"el-select__caret\",\n \"el-input__icon\",\n \"el-icon-\" + _vm.iconClass\n ]\n }),\n _vm.showClose\n ? _c(\"i\", {\n staticClass:\n \"el-select__caret el-input__icon el-icon-circle-close\",\n on: { click: _vm.handleClearClick }\n })\n : _vm._e()\n ])\n ],\n 2\n ),\n _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"before-enter\": _vm.handleMenuEnter,\n \"after-leave\": _vm.doDestroy\n }\n },\n [\n _c(\n \"el-select-menu\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible && _vm.emptyText !== false,\n expression: \"visible && emptyText !== false\"\n }\n ],\n ref: \"popper\",\n attrs: { \"append-to-body\": _vm.popperAppendToBody }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.options.length > 0 && !_vm.loading,\n expression: \"options.length > 0 && !loading\"\n }\n ],\n ref: \"scrollbar\",\n class: {\n \"is-empty\":\n !_vm.allowCreate &&\n _vm.query &&\n _vm.filteredOptionsCount === 0\n },\n attrs: {\n tag: \"ul\",\n \"wrap-class\": \"el-select-dropdown__wrap\",\n \"view-class\": \"el-select-dropdown__list\"\n }\n },\n [\n _vm.showNewOption\n ? _c(\"el-option\", {\n attrs: { value: _vm.query, created: \"\" }\n })\n : _vm._e(),\n _vm._t(\"default\")\n ],\n 2\n ),\n _vm.emptyText &&\n (!_vm.allowCreate ||\n _vm.loading ||\n (_vm.allowCreate && _vm.options.length === 0))\n ? [\n _vm.$slots.empty\n ? _vm._t(\"empty\")\n : _c(\"p\", { staticClass: \"el-select-dropdown__empty\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.emptyText) +\n \"\\n \"\n )\n ])\n ]\n : _vm._e()\n ],\n 2\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __webpack_require__(22);\nvar focus_default = /*#__PURE__*/__webpack_require__.n(focus_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __webpack_require__(6);\nvar locale_default = /*#__PURE__*/__webpack_require__.n(locale_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __webpack_require__(10);\nvar input_default = /*#__PURE__*/__webpack_require__.n(input_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\nvar select_dropdownvue_type_template_id_06828748_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-select-dropdown el-popper\",\n class: [{ \"is-multiple\": _vm.$parent.multiple }, _vm.popperClass],\n style: { minWidth: _vm.minWidth }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar select_dropdownvue_type_template_id_06828748_staticRenderFns = []\nselect_dropdownvue_type_template_id_06828748_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __webpack_require__(5);\nvar vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var select_dropdownvue_type_script_lang_js_ = ({\n name: 'ElSelectDropdown',\n\n componentName: 'ElSelectDropdown',\n\n mixins: [vue_popper_default.a],\n\n props: {\n placement: {\n default: 'bottom-start'\n },\n\n boundariesPadding: {\n default: 0\n },\n\n popperOptions: {\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n },\n\n visibleArrow: {\n default: true\n },\n\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n minWidth: ''\n };\n },\n\n\n computed: {\n popperClass: function popperClass() {\n return this.$parent.popperClass;\n }\n },\n\n watch: {\n '$parent.inputWidth': function $parentInputWidth() {\n this.minWidth = this.$parent.$el.getBoundingClientRect().width + 'px';\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n this.referenceElm = this.$parent.$refs.reference.$el;\n this.$parent.popperElm = this.popperElm = this.$el;\n this.$on('updatePopper', function () {\n if (_this.$parent.visible) _this.updatePopper();\n });\n this.$on('destroyPopper', this.destroyPopper);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_select_dropdownvue_type_script_lang_js_ = (select_dropdownvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_select_dropdownvue_type_script_lang_js_,\n select_dropdownvue_type_template_id_06828748_render,\n select_dropdownvue_type_template_id_06828748_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/select-dropdown.vue\"\n/* harmony default export */ var select_dropdown = (component.exports);\n// EXTERNAL MODULE: ./packages/select/src/option.vue + 4 modules\nvar src_option = __webpack_require__(33);\n\n// EXTERNAL MODULE: external \"element-ui/lib/tag\"\nvar tag_ = __webpack_require__(37);\nvar tag_default = /*#__PURE__*/__webpack_require__.n(tag_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __webpack_require__(14);\nvar scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);\n\n// EXTERNAL MODULE: external \"throttle-debounce/debounce\"\nvar debounce_ = __webpack_require__(17);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/clickoutside\"\nvar clickoutside_ = __webpack_require__(12);\nvar clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/resize-event\"\nvar resize_event_ = __webpack_require__(16);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scroll-into-view\"\nvar scroll_into_view_ = __webpack_require__(31);\nvar scroll_into_view_default = /*#__PURE__*/__webpack_require__.n(scroll_into_view_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./packages/select/src/navigation-mixin.js\n/* harmony default export */ var navigation_mixin = ({\n data: function data() {\n return {\n hoverOption: -1\n };\n },\n\n\n computed: {\n optionsAllDisabled: function optionsAllDisabled() {\n return this.options.filter(function (option) {\n return option.visible;\n }).every(function (option) {\n return option.disabled;\n });\n }\n },\n\n watch: {\n hoverIndex: function hoverIndex(val) {\n var _this = this;\n\n if (typeof val === 'number' && val > -1) {\n this.hoverOption = this.options[val] || {};\n }\n this.options.forEach(function (option) {\n option.hover = _this.hoverOption === option;\n });\n }\n },\n\n methods: {\n navigateOptions: function navigateOptions(direction) {\n var _this2 = this;\n\n if (!this.visible) {\n this.visible = true;\n return;\n }\n if (this.options.length === 0 || this.filteredOptionsCount === 0) return;\n if (!this.optionsAllDisabled) {\n if (direction === 'next') {\n this.hoverIndex++;\n if (this.hoverIndex === this.options.length) {\n this.hoverIndex = 0;\n }\n } else if (direction === 'prev') {\n this.hoverIndex--;\n if (this.hoverIndex < 0) {\n this.hoverIndex = this.options.length - 1;\n }\n }\n var option = this.options[this.hoverIndex];\n if (option.disabled === true || option.groupDisabled === true || !option.visible) {\n this.navigateOptions(direction);\n }\n this.$nextTick(function () {\n return _this2.scrollToOption(_this2.hoverOption);\n });\n }\n }\n }\n});\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var selectvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a, locale_default.a, focus_default()('reference'), navigation_mixin],\n\n name: 'ElSelect',\n\n componentName: 'ElSelect',\n\n inject: {\n elForm: {\n default: ''\n },\n\n elFormItem: {\n default: ''\n }\n },\n\n provide: function provide() {\n return {\n 'select': this\n };\n },\n\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n readonly: function readonly() {\n return !this.filterable || this.multiple || !Object(util_[\"isIE\"])() && !Object(util_[\"isEdge\"])() && !this.visible;\n },\n showClose: function showClose() {\n var hasValue = this.multiple ? Array.isArray(this.value) && this.value.length > 0 : this.value !== undefined && this.value !== null && this.value !== '';\n var criteria = this.clearable && !this.selectDisabled && this.inputHovering && hasValue;\n return criteria;\n },\n iconClass: function iconClass() {\n return this.remote && this.filterable ? '' : this.visible ? 'arrow-up is-reverse' : 'arrow-up';\n },\n debounce: function debounce() {\n return this.remote ? 300 : 0;\n },\n emptyText: function emptyText() {\n if (this.loading) {\n return this.loadingText || this.t('el.select.loading');\n } else {\n if (this.remote && this.query === '' && this.options.length === 0) return false;\n if (this.filterable && this.query && this.options.length > 0 && this.filteredOptionsCount === 0) {\n return this.noMatchText || this.t('el.select.noMatch');\n }\n if (this.options.length === 0) {\n return this.noDataText || this.t('el.select.noData');\n }\n }\n return null;\n },\n showNewOption: function showNewOption() {\n var _this = this;\n\n var hasExistingOption = this.options.filter(function (option) {\n return !option.created;\n }).some(function (option) {\n return option.currentLabel === _this.query;\n });\n return this.filterable && this.allowCreate && this.query !== '' && !hasExistingOption;\n },\n selectSize: function selectSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n selectDisabled: function selectDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n collapseTagSize: function collapseTagSize() {\n return ['small', 'mini'].indexOf(this.selectSize) > -1 ? 'mini' : 'small';\n },\n propPlaceholder: function propPlaceholder() {\n return typeof this.placeholder !== 'undefined' ? this.placeholder : this.t('el.select.placeholder');\n }\n },\n\n components: {\n ElInput: input_default.a,\n ElSelectMenu: select_dropdown,\n ElOption: src_option[\"a\" /* default */],\n ElTag: tag_default.a,\n ElScrollbar: scrollbar_default.a\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n props: {\n name: String,\n id: String,\n value: {\n required: true\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && false;\n return true;\n }\n },\n automaticDropdown: Boolean,\n size: String,\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n allowCreate: Boolean,\n loading: Boolean,\n popperClass: String,\n remote: Boolean,\n loadingText: String,\n noMatchText: String,\n noDataText: String,\n remoteMethod: Function,\n filterMethod: Function,\n multiple: Boolean,\n multipleLimit: {\n type: Number,\n default: 0\n },\n placeholder: {\n type: String,\n required: false\n },\n defaultFirstOption: Boolean,\n reserveKeyword: Boolean,\n valueKey: {\n type: String,\n default: 'value'\n },\n collapseTags: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n options: [],\n cachedOptions: [],\n createdLabel: null,\n createdSelected: false,\n selected: this.multiple ? [] : {},\n inputLength: 20,\n inputWidth: 0,\n initialInputHeight: 0,\n cachedPlaceHolder: '',\n optionsCount: 0,\n filteredOptionsCount: 0,\n visible: false,\n softFocus: false,\n selectedLabel: '',\n hoverIndex: -1,\n query: '',\n previousQuery: null,\n inputHovering: false,\n currentPlaceholder: '',\n menuVisibleOnFocus: false,\n isOnComposition: false,\n isSilentBlur: false\n };\n },\n\n\n watch: {\n selectDisabled: function selectDisabled() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.resetInputHeight();\n });\n },\n propPlaceholder: function propPlaceholder(val) {\n this.cachedPlaceHolder = this.currentPlaceholder = val;\n },\n value: function value(val, oldVal) {\n if (this.multiple) {\n this.resetInputHeight();\n if (val && val.length > 0 || this.$refs.input && this.query !== '') {\n this.currentPlaceholder = '';\n } else {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n if (this.filterable && !this.reserveKeyword) {\n this.query = '';\n this.handleQueryChange(this.query);\n }\n }\n this.setSelected();\n if (this.filterable && !this.multiple) {\n this.inputLength = 20;\n }\n if (!Object(util_[\"valueEquals\"])(val, oldVal)) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n }\n },\n visible: function visible(val) {\n var _this3 = this;\n\n if (!val) {\n this.broadcast('ElSelectDropdown', 'destroyPopper');\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n this.query = '';\n this.previousQuery = null;\n this.selectedLabel = '';\n this.inputLength = 20;\n this.menuVisibleOnFocus = false;\n this.resetHoverIndex();\n this.$nextTick(function () {\n if (_this3.$refs.input && _this3.$refs.input.value === '' && _this3.selected.length === 0) {\n _this3.currentPlaceholder = _this3.cachedPlaceHolder;\n }\n });\n if (!this.multiple) {\n if (this.selected) {\n if (this.filterable && this.allowCreate && this.createdSelected && this.createdLabel) {\n this.selectedLabel = this.createdLabel;\n } else {\n this.selectedLabel = this.selected.currentLabel;\n }\n if (this.filterable) this.query = this.selectedLabel;\n }\n\n if (this.filterable) {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n }\n } else {\n this.broadcast('ElSelectDropdown', 'updatePopper');\n if (this.filterable) {\n this.query = this.remote ? '' : this.selectedLabel;\n this.handleQueryChange(this.query);\n if (this.multiple) {\n this.$refs.input.focus();\n } else {\n if (!this.remote) {\n this.broadcast('ElOption', 'queryChange', '');\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n\n if (this.selectedLabel) {\n this.currentPlaceholder = this.selectedLabel;\n this.selectedLabel = '';\n }\n }\n }\n }\n this.$emit('visible-change', val);\n },\n options: function options() {\n var _this4 = this;\n\n if (this.$isServer) return;\n this.$nextTick(function () {\n _this4.broadcast('ElSelectDropdown', 'updatePopper');\n });\n if (this.multiple) {\n this.resetInputHeight();\n }\n var inputs = this.$el.querySelectorAll('input');\n if ([].indexOf.call(inputs, document.activeElement) === -1) {\n this.setSelected();\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n }\n },\n\n methods: {\n handleComposition: function handleComposition(event) {\n var _this5 = this;\n\n var text = event.target.value;\n if (event.type === 'compositionend') {\n this.isOnComposition = false;\n this.$nextTick(function (_) {\n return _this5.handleQueryChange(text);\n });\n } else {\n var lastCharacter = text[text.length - 1] || '';\n this.isOnComposition = !Object(shared_[\"isKorean\"])(lastCharacter);\n }\n },\n handleQueryChange: function handleQueryChange(val) {\n var _this6 = this;\n\n if (this.previousQuery === val || this.isOnComposition) return;\n if (this.previousQuery === null && (typeof this.filterMethod === 'function' || typeof this.remoteMethod === 'function')) {\n this.previousQuery = val;\n return;\n }\n this.previousQuery = val;\n this.$nextTick(function () {\n if (_this6.visible) _this6.broadcast('ElSelectDropdown', 'updatePopper');\n });\n this.hoverIndex = -1;\n if (this.multiple && this.filterable) {\n this.$nextTick(function () {\n var length = _this6.$refs.input.value.length * 15 + 20;\n _this6.inputLength = _this6.collapseTags ? Math.min(50, length) : length;\n _this6.managePlaceholder();\n _this6.resetInputHeight();\n });\n }\n if (this.remote && typeof this.remoteMethod === 'function') {\n this.hoverIndex = -1;\n this.remoteMethod(val);\n } else if (typeof this.filterMethod === 'function') {\n this.filterMethod(val);\n this.broadcast('ElOptionGroup', 'queryChange');\n } else {\n this.filteredOptionsCount = this.optionsCount;\n this.broadcast('ElOption', 'queryChange', val);\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n },\n scrollToOption: function scrollToOption(option) {\n var target = Array.isArray(option) && option[0] ? option[0].$el : option.$el;\n if (this.$refs.popper && target) {\n var menu = this.$refs.popper.$el.querySelector('.el-select-dropdown__wrap');\n scroll_into_view_default()(menu, target);\n }\n this.$refs.scrollbar && this.$refs.scrollbar.handleScroll();\n },\n handleMenuEnter: function handleMenuEnter() {\n var _this7 = this;\n\n this.$nextTick(function () {\n return _this7.scrollToOption(_this7.selected);\n });\n },\n emitChange: function emitChange(val) {\n if (!Object(util_[\"valueEquals\"])(this.value, val)) {\n this.$emit('change', val);\n }\n },\n getOption: function getOption(value) {\n var option = void 0;\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n var isNull = Object.prototype.toString.call(value).toLowerCase() === '[object null]';\n var isUndefined = Object.prototype.toString.call(value).toLowerCase() === '[object undefined]';\n\n for (var i = this.cachedOptions.length - 1; i >= 0; i--) {\n var cachedOption = this.cachedOptions[i];\n var isEqual = isObject ? Object(util_[\"getValueByPath\"])(cachedOption.value, this.valueKey) === Object(util_[\"getValueByPath\"])(value, this.valueKey) : cachedOption.value === value;\n if (isEqual) {\n option = cachedOption;\n break;\n }\n }\n if (option) return option;\n var label = !isObject && !isNull && !isUndefined ? value : '';\n var newOption = {\n value: value,\n currentLabel: label\n };\n if (this.multiple) {\n newOption.hitState = false;\n }\n return newOption;\n },\n setSelected: function setSelected() {\n var _this8 = this;\n\n if (!this.multiple) {\n var option = this.getOption(this.value);\n if (option.created) {\n this.createdLabel = option.currentLabel;\n this.createdSelected = true;\n } else {\n this.createdSelected = false;\n }\n this.selectedLabel = option.currentLabel;\n this.selected = option;\n if (this.filterable) this.query = this.selectedLabel;\n return;\n }\n var result = [];\n if (Array.isArray(this.value)) {\n this.value.forEach(function (value) {\n result.push(_this8.getOption(value));\n });\n }\n this.selected = result;\n this.$nextTick(function () {\n _this8.resetInputHeight();\n });\n },\n handleFocus: function handleFocus(event) {\n if (!this.softFocus) {\n if (this.automaticDropdown || this.filterable) {\n this.visible = true;\n if (this.filterable) {\n this.menuVisibleOnFocus = true;\n }\n }\n this.$emit('focus', event);\n } else {\n this.softFocus = false;\n }\n },\n blur: function blur() {\n this.visible = false;\n this.$refs.reference.blur();\n },\n handleBlur: function handleBlur(event) {\n var _this9 = this;\n\n setTimeout(function () {\n if (_this9.isSilentBlur) {\n _this9.isSilentBlur = false;\n } else {\n _this9.$emit('blur', event);\n }\n }, 50);\n this.softFocus = false;\n },\n handleClearClick: function handleClearClick(event) {\n this.deleteSelected(event);\n },\n doDestroy: function doDestroy() {\n this.$refs.popper && this.$refs.popper.doDestroy();\n },\n handleClose: function handleClose() {\n this.visible = false;\n },\n toggleLastOptionHitState: function toggleLastOptionHitState(hit) {\n if (!Array.isArray(this.selected)) return;\n var option = this.selected[this.selected.length - 1];\n if (!option) return;\n\n if (hit === true || hit === false) {\n option.hitState = hit;\n return hit;\n }\n\n option.hitState = !option.hitState;\n return option.hitState;\n },\n deletePrevTag: function deletePrevTag(e) {\n if (e.target.value.length <= 0 && !this.toggleLastOptionHitState()) {\n var value = this.value.slice();\n value.pop();\n this.$emit('input', value);\n this.emitChange(value);\n }\n },\n managePlaceholder: function managePlaceholder() {\n if (this.currentPlaceholder !== '') {\n this.currentPlaceholder = this.$refs.input.value ? '' : this.cachedPlaceHolder;\n }\n },\n resetInputState: function resetInputState(e) {\n if (e.keyCode !== 8) this.toggleLastOptionHitState(false);\n this.inputLength = this.$refs.input.value.length * 15 + 20;\n this.resetInputHeight();\n },\n resetInputHeight: function resetInputHeight() {\n var _this10 = this;\n\n if (this.collapseTags && !this.filterable) return;\n this.$nextTick(function () {\n if (!_this10.$refs.reference) return;\n var inputChildNodes = _this10.$refs.reference.$el.childNodes;\n var input = [].filter.call(inputChildNodes, function (item) {\n return item.tagName === 'INPUT';\n })[0];\n var tags = _this10.$refs.tags;\n var sizeInMap = _this10.initialInputHeight || 40;\n input.style.height = _this10.selected.length === 0 ? sizeInMap + 'px' : Math.max(tags ? tags.clientHeight + (tags.clientHeight > sizeInMap ? 6 : 0) : 0, sizeInMap) + 'px';\n if (_this10.visible && _this10.emptyText !== false) {\n _this10.broadcast('ElSelectDropdown', 'updatePopper');\n }\n });\n },\n resetHoverIndex: function resetHoverIndex() {\n var _this11 = this;\n\n setTimeout(function () {\n if (!_this11.multiple) {\n _this11.hoverIndex = _this11.options.indexOf(_this11.selected);\n } else {\n if (_this11.selected.length > 0) {\n _this11.hoverIndex = Math.min.apply(null, _this11.selected.map(function (item) {\n return _this11.options.indexOf(item);\n }));\n } else {\n _this11.hoverIndex = -1;\n }\n }\n }, 300);\n },\n handleOptionSelect: function handleOptionSelect(option, byClick) {\n var _this12 = this;\n\n if (this.multiple) {\n var value = (this.value || []).slice();\n var optionIndex = this.getValueIndex(value, option.value);\n if (optionIndex > -1) {\n value.splice(optionIndex, 1);\n } else if (this.multipleLimit <= 0 || value.length < this.multipleLimit) {\n value.push(option.value);\n }\n this.$emit('input', value);\n this.emitChange(value);\n if (option.created) {\n this.query = '';\n this.handleQueryChange('');\n this.inputLength = 20;\n }\n if (this.filterable) this.$refs.input.focus();\n } else {\n this.$emit('input', option.value);\n this.emitChange(option.value);\n this.visible = false;\n }\n this.isSilentBlur = byClick;\n this.setSoftFocus();\n if (this.visible) return;\n this.$nextTick(function () {\n _this12.scrollToOption(option);\n });\n },\n setSoftFocus: function setSoftFocus() {\n this.softFocus = true;\n var input = this.$refs.input || this.$refs.reference;\n if (input) {\n input.focus();\n }\n },\n getValueIndex: function getValueIndex() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var value = arguments[1];\n\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n if (!isObject) {\n return arr.indexOf(value);\n } else {\n var valueKey = this.valueKey;\n var index = -1;\n arr.some(function (item, i) {\n if (Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(value, valueKey)) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n }\n },\n toggleMenu: function toggleMenu() {\n if (!this.selectDisabled) {\n if (this.menuVisibleOnFocus) {\n this.menuVisibleOnFocus = false;\n } else {\n this.visible = !this.visible;\n }\n if (this.visible) {\n (this.$refs.input || this.$refs.reference).focus();\n }\n }\n },\n selectOption: function selectOption() {\n if (!this.visible) {\n this.toggleMenu();\n } else {\n if (this.options[this.hoverIndex]) {\n this.handleOptionSelect(this.options[this.hoverIndex]);\n }\n }\n },\n deleteSelected: function deleteSelected(event) {\n event.stopPropagation();\n var value = this.multiple ? [] : '';\n this.$emit('input', value);\n this.emitChange(value);\n this.visible = false;\n this.$emit('clear');\n },\n deleteTag: function deleteTag(event, tag) {\n var index = this.selected.indexOf(tag);\n if (index > -1 && !this.selectDisabled) {\n var value = this.value.slice();\n value.splice(index, 1);\n this.$emit('input', value);\n this.emitChange(value);\n this.$emit('remove-tag', tag.value);\n }\n event.stopPropagation();\n },\n onInputChange: function onInputChange() {\n if (this.filterable && this.query !== this.selectedLabel) {\n this.query = this.selectedLabel;\n this.handleQueryChange(this.query);\n }\n },\n onOptionDestroy: function onOptionDestroy(index) {\n if (index > -1) {\n this.optionsCount--;\n this.filteredOptionsCount--;\n this.options.splice(index, 1);\n }\n },\n resetInputWidth: function resetInputWidth() {\n this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;\n },\n handleResize: function handleResize() {\n this.resetInputWidth();\n if (this.multiple) this.resetInputHeight();\n },\n checkDefaultFirstOption: function checkDefaultFirstOption() {\n this.hoverIndex = -1;\n // highlight the created option\n var hasCreated = false;\n for (var i = this.options.length - 1; i >= 0; i--) {\n if (this.options[i].created) {\n hasCreated = true;\n this.hoverIndex = i;\n break;\n }\n }\n if (hasCreated) return;\n for (var _i = 0; _i !== this.options.length; ++_i) {\n var option = this.options[_i];\n if (this.query) {\n // highlight first options that passes the filter\n if (!option.disabled && !option.groupDisabled && option.visible) {\n this.hoverIndex = _i;\n break;\n }\n } else {\n // highlight currently selected option\n if (option.itemSelected) {\n this.hoverIndex = _i;\n break;\n }\n }\n }\n },\n getValueKey: function getValueKey(item) {\n if (Object.prototype.toString.call(item.value).toLowerCase() !== '[object object]') {\n return item.value;\n } else {\n return Object(util_[\"getValueByPath\"])(item.value, this.valueKey);\n }\n }\n },\n\n created: function created() {\n var _this13 = this;\n\n this.cachedPlaceHolder = this.currentPlaceholder = this.propPlaceholder;\n if (this.multiple && !Array.isArray(this.value)) {\n this.$emit('input', []);\n }\n if (!this.multiple && Array.isArray(this.value)) {\n this.$emit('input', '');\n }\n\n this.debouncedOnInputChange = debounce_default()(this.debounce, function () {\n _this13.onInputChange();\n });\n\n this.debouncedQueryChange = debounce_default()(this.debounce, function (e) {\n _this13.handleQueryChange(e.target.value);\n });\n\n this.$on('handleOptionClick', this.handleOptionSelect);\n this.$on('setSelected', this.setSelected);\n },\n mounted: function mounted() {\n var _this14 = this;\n\n if (this.multiple && Array.isArray(this.value) && this.value.length > 0) {\n this.currentPlaceholder = '';\n }\n Object(resize_event_[\"addResizeListener\"])(this.$el, this.handleResize);\n\n var reference = this.$refs.reference;\n if (reference && reference.$el) {\n var sizeMap = {\n medium: 36,\n small: 32,\n mini: 28\n };\n var input = reference.$el.querySelector('input');\n this.initialInputHeight = input.getBoundingClientRect().height || sizeMap[this.selectSize];\n }\n if (this.remote && this.multiple) {\n this.resetInputHeight();\n }\n this.$nextTick(function () {\n if (reference && reference.$el) {\n _this14.inputWidth = reference.$el.getBoundingClientRect().width;\n }\n });\n this.setSelected();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$el && this.handleResize) Object(resize_event_[\"removeResizeListener\"])(this.$el, this.handleResize);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_selectvue_type_script_lang_js_ = (selectvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/select/src/select.vue\n\n\n\n\n\n/* normalize component */\n\nvar select_component = Object(componentNormalizer[\"a\" /* default */])(\n src_selectvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var select_api; }\nselect_component.options.__file = \"packages/select/src/select.vue\"\n/* harmony default export */ var src_select = (select_component.exports);\n// CONCATENATED MODULE: ./packages/select/index.js\n\n\n/* istanbul ignore next */\nsrc_select.install = function (Vue) {\n Vue.component(src_select.name, src_select);\n};\n\n/* harmony default export */ var packages_select = __webpack_exports__[\"default\"] = (src_select);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 116);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 116:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=template&id=69cd6268&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-radio\",\n class: [\n _vm.border && _vm.radioSize ? \"el-radio--\" + _vm.radioSize : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-focus\": _vm.focus },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.model === _vm.label }\n ],\n attrs: {\n role: \"radio\",\n \"aria-checked\": _vm.model === _vm.label,\n \"aria-disabled\": _vm.isDisabled,\n tabindex: _vm.tabIndex\n },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"space\", 32, $event.key, [\" \", \"Spacebar\"])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.model = _vm.isDisabled ? _vm.model : _vm.label\n }\n }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-radio__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.model === _vm.label\n }\n },\n [\n _c(\"span\", { staticClass: \"el-radio__inner\" }),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n ref: \"radio\",\n staticClass: \"el-radio__original\",\n attrs: {\n type: \"radio\",\n \"aria-hidden\": \"true\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n tabindex: \"-1\"\n },\n domProps: {\n value: _vm.label,\n checked: _vm._q(_vm.model, _vm.label)\n },\n on: {\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n },\n change: [\n function($event) {\n _vm.model = _vm.label\n },\n _vm.handleChange\n ]\n }\n })\n ]\n ),\n _c(\n \"span\",\n {\n staticClass: \"el-radio__label\",\n on: {\n keydown: function($event) {\n $event.stopPropagation()\n }\n }\n },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=template&id=69cd6268&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var radiovue_type_script_lang_js_ = ({\n name: 'ElRadio',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElRadio',\n\n props: {\n value: {},\n label: {},\n disabled: Boolean,\n name: String,\n border: Boolean,\n size: String\n },\n\n data: function data() {\n return {\n focus: false\n };\n },\n\n computed: {\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElRadioGroup') {\n parent = parent.$parent;\n } else {\n this._radioGroup = parent;\n return true;\n }\n }\n return false;\n },\n\n model: {\n get: function get() {\n return this.isGroup ? this._radioGroup.value : this.value;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.dispatch('ElRadioGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n }\n this.$refs.radio && (this.$refs.radio.checked = this.model === this.label);\n }\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n radioSize: function radioSize() {\n var temRadioSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._radioGroup.radioGroupSize || temRadioSize : temRadioSize;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._radioGroup.disabled || this.disabled || (this.elForm || {}).disabled : this.disabled || (this.elForm || {}).disabled;\n },\n tabIndex: function tabIndex() {\n return this.isDisabled || this.isGroup && this.model !== this.label ? -1 : 0;\n }\n },\n\n methods: {\n handleChange: function handleChange() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.$emit('change', _this.model);\n _this.isGroup && _this.dispatch('ElRadioGroup', 'handleChange', _this.model);\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_radiovue_type_script_lang_js_ = (radiovue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_radiovue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/radio/src/radio.vue\"\n/* harmony default export */ var src_radio = (component.exports);\n// CONCATENATED MODULE: ./packages/radio/index.js\n\n\n/* istanbul ignore next */\nsrc_radio.install = function (Vue) {\n Vue.component(src_radio.name, src_radio);\n};\n\n/* harmony default export */ var packages_radio = __webpack_exports__[\"default\"] = (src_radio);\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ })\n\n/******/ });","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.9.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n /* global Symbol -- required for testing */\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (ref) {\n return {\n methods: {\n focus: function focus() {\n this.$refs[ref].focus();\n }\n }\n };\n};\n\n;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","'use strict';\n\nexports.__esModule = true;\n\nvar _locale = require('element-ui/lib/locale');\n\nexports.default = {\n methods: {\n t: function t() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _locale.t.apply(this, args);\n }\n }\n};","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 45);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/date-util\");\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/dom\");\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/locale\");\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/vue-popper\");\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/merge\");\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input\");\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/migrating\");\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/clickoutside\");\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/button\");\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/resize-event\");\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/popup\");\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce/debounce\");\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/locale\");\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/checkbox\");\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/scrollbar\");\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/types\");\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/shared\");\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/date\");\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/transitions/collapse-transition\");\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/focus\");\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/vdom\");\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"babel-helper-vue-jsx-merge-props\");\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce/throttle\");\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/tooltip\");\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scroll-into-view\");\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/button-group\");\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/tag\");\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/scrollbar-width\");\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/checkbox-group\");\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/after-leave\");\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/progress\");\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/aria-utils\");\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"throttle-debounce\");\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/select\");\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/option\");\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"normalize-wheel\");\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/aria-dialog\");\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"async-validator\");\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input-number\");\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/cascader-panel\");\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/radio\");\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/popover\");\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(46);\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/pagination/src/pager.vue?vue&type=template&id=7274f267&\nvar pagervue_type_template_id_7274f267_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"ul\",\n { staticClass: \"el-pager\", on: { click: _vm.onPagerClick } },\n [\n _vm.pageCount > 0\n ? _c(\n \"li\",\n {\n staticClass: \"number\",\n class: { active: _vm.currentPage === 1, disabled: _vm.disabled }\n },\n [_vm._v(\"1\")]\n )\n : _vm._e(),\n _vm.showPrevMore\n ? _c(\"li\", {\n staticClass: \"el-icon more btn-quickprev\",\n class: [_vm.quickprevIconClass, { disabled: _vm.disabled }],\n on: {\n mouseenter: function($event) {\n _vm.onMouseenter(\"left\")\n },\n mouseleave: function($event) {\n _vm.quickprevIconClass = \"el-icon-more\"\n }\n }\n })\n : _vm._e(),\n _vm._l(_vm.pagers, function(pager) {\n return _c(\n \"li\",\n {\n key: pager,\n staticClass: \"number\",\n class: { active: _vm.currentPage === pager, disabled: _vm.disabled }\n },\n [_vm._v(_vm._s(pager))]\n )\n }),\n _vm.showNextMore\n ? _c(\"li\", {\n staticClass: \"el-icon more btn-quicknext\",\n class: [_vm.quicknextIconClass, { disabled: _vm.disabled }],\n on: {\n mouseenter: function($event) {\n _vm.onMouseenter(\"right\")\n },\n mouseleave: function($event) {\n _vm.quicknextIconClass = \"el-icon-more\"\n }\n }\n })\n : _vm._e(),\n _vm.pageCount > 1\n ? _c(\n \"li\",\n {\n staticClass: \"number\",\n class: {\n active: _vm.currentPage === _vm.pageCount,\n disabled: _vm.disabled\n }\n },\n [_vm._v(_vm._s(_vm.pageCount))]\n )\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\npagervue_type_template_id_7274f267_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue?vue&type=template&id=7274f267&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/pagination/src/pager.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var pagervue_type_script_lang_js_ = ({\n name: 'ElPager',\n\n props: {\n currentPage: Number,\n\n pageCount: Number,\n\n pagerCount: Number,\n\n disabled: Boolean\n },\n\n watch: {\n showPrevMore: function showPrevMore(val) {\n if (!val) this.quickprevIconClass = 'el-icon-more';\n },\n showNextMore: function showNextMore(val) {\n if (!val) this.quicknextIconClass = 'el-icon-more';\n }\n },\n\n methods: {\n onPagerClick: function onPagerClick(event) {\n var target = event.target;\n if (target.tagName === 'UL' || this.disabled) {\n return;\n }\n\n var newPage = Number(event.target.textContent);\n var pageCount = this.pageCount;\n var currentPage = this.currentPage;\n var pagerCountOffset = this.pagerCount - 2;\n\n if (target.className.indexOf('more') !== -1) {\n if (target.className.indexOf('quickprev') !== -1) {\n newPage = currentPage - pagerCountOffset;\n } else if (target.className.indexOf('quicknext') !== -1) {\n newPage = currentPage + pagerCountOffset;\n }\n }\n\n /* istanbul ignore if */\n if (!isNaN(newPage)) {\n if (newPage < 1) {\n newPage = 1;\n }\n\n if (newPage > pageCount) {\n newPage = pageCount;\n }\n }\n\n if (newPage !== currentPage) {\n this.$emit('change', newPage);\n }\n },\n onMouseenter: function onMouseenter(direction) {\n if (this.disabled) return;\n if (direction === 'left') {\n this.quickprevIconClass = 'el-icon-d-arrow-left';\n } else {\n this.quicknextIconClass = 'el-icon-d-arrow-right';\n }\n }\n },\n\n computed: {\n pagers: function pagers() {\n var pagerCount = this.pagerCount;\n var halfPagerCount = (pagerCount - 1) / 2;\n\n var currentPage = Number(this.currentPage);\n var pageCount = Number(this.pageCount);\n\n var showPrevMore = false;\n var showNextMore = false;\n\n if (pageCount > pagerCount) {\n if (currentPage > pagerCount - halfPagerCount) {\n showPrevMore = true;\n }\n\n if (currentPage < pageCount - halfPagerCount) {\n showNextMore = true;\n }\n }\n\n var array = [];\n\n if (showPrevMore && !showNextMore) {\n var startPage = pageCount - (pagerCount - 2);\n for (var i = startPage; i < pageCount; i++) {\n array.push(i);\n }\n } else if (!showPrevMore && showNextMore) {\n for (var _i = 2; _i < pagerCount; _i++) {\n array.push(_i);\n }\n } else if (showPrevMore && showNextMore) {\n var offset = Math.floor(pagerCount / 2) - 1;\n for (var _i2 = currentPage - offset; _i2 <= currentPage + offset; _i2++) {\n array.push(_i2);\n }\n } else {\n for (var _i3 = 2; _i3 < pageCount; _i3++) {\n array.push(_i3);\n }\n }\n\n this.showPrevMore = showPrevMore;\n this.showNextMore = showNextMore;\n\n return array;\n }\n },\n\n data: function data() {\n return {\n current: null,\n showPrevMore: false,\n showNextMore: false,\n quicknextIconClass: 'el-icon-more',\n quickprevIconClass: 'el-icon-more'\n };\n }\n});\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_pagervue_type_script_lang_js_ = (pagervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n src_pagervue_type_script_lang_js_,\n pagervue_type_template_id_7274f267_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/pagination/src/pager.vue\"\n/* harmony default export */ var pager = (component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/select\"\nvar select_ = __webpack_require__(36);\nvar select_default = /*#__PURE__*/__webpack_require__.n(select_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/option\"\nvar option_ = __webpack_require__(37);\nvar option_default = /*#__PURE__*/__webpack_require__.n(option_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __webpack_require__(8);\nvar input_default = /*#__PURE__*/__webpack_require__.n(input_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __webpack_require__(4);\nvar locale_default = /*#__PURE__*/__webpack_require__.n(locale_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(2);\n\n// CONCATENATED MODULE: ./packages/pagination/src/pagination.js\n\n\n\n\n\n\n\n/* harmony default export */ var pagination = ({\n name: 'ElPagination',\n\n props: {\n pageSize: {\n type: Number,\n default: 10\n },\n\n small: Boolean,\n\n total: Number,\n\n pageCount: Number,\n\n pagerCount: {\n type: Number,\n validator: function validator(value) {\n return (value | 0) === value && value > 4 && value < 22 && value % 2 === 1;\n },\n\n default: 7\n },\n\n currentPage: {\n type: Number,\n default: 1\n },\n\n layout: {\n default: 'prev, pager, next, jumper, ->, total'\n },\n\n pageSizes: {\n type: Array,\n default: function _default() {\n return [10, 20, 30, 40, 50, 100];\n }\n },\n\n popperClass: String,\n\n prevText: String,\n\n nextText: String,\n\n background: Boolean,\n\n disabled: Boolean,\n\n hideOnSinglePage: Boolean\n },\n\n data: function data() {\n return {\n internalCurrentPage: 1,\n internalPageSize: 0,\n lastEmittedPage: -1,\n userChangePageSize: false\n };\n },\n render: function render(h) {\n var layout = this.layout;\n if (!layout) return null;\n if (this.hideOnSinglePage && (!this.internalPageCount || this.internalPageCount === 1)) return null;\n\n var template = h('div', { 'class': ['el-pagination', {\n 'is-background': this.background,\n 'el-pagination--small': this.small\n }] });\n var TEMPLATE_MAP = {\n prev: h('prev'),\n jumper: h('jumper'),\n pager: h('pager', {\n attrs: { currentPage: this.internalCurrentPage, pageCount: this.internalPageCount, pagerCount: this.pagerCount, disabled: this.disabled },\n on: {\n 'change': this.handleCurrentChange\n }\n }),\n next: h('next'),\n sizes: h('sizes', {\n attrs: { pageSizes: this.pageSizes }\n }),\n slot: h('slot', [this.$slots.default ? this.$slots.default : '']),\n total: h('total')\n };\n var components = layout.split(',').map(function (item) {\n return item.trim();\n });\n var rightWrapper = h('div', { 'class': 'el-pagination__rightwrapper' });\n var haveRightWrapper = false;\n\n template.children = template.children || [];\n rightWrapper.children = rightWrapper.children || [];\n components.forEach(function (compo) {\n if (compo === '->') {\n haveRightWrapper = true;\n return;\n }\n\n if (!haveRightWrapper) {\n template.children.push(TEMPLATE_MAP[compo]);\n } else {\n rightWrapper.children.push(TEMPLATE_MAP[compo]);\n }\n });\n\n if (haveRightWrapper) {\n template.children.unshift(rightWrapper);\n }\n\n return template;\n },\n\n\n components: {\n Prev: {\n render: function render(h) {\n return h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n disabled: this.$parent.disabled || this.$parent.internalCurrentPage <= 1\n },\n 'class': 'btn-prev', on: {\n 'click': this.$parent.prev\n }\n },\n [this.$parent.prevText ? h('span', [this.$parent.prevText]) : h('i', { 'class': 'el-icon el-icon-arrow-left' })]\n );\n }\n },\n\n Next: {\n render: function render(h) {\n return h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n disabled: this.$parent.disabled || this.$parent.internalCurrentPage === this.$parent.internalPageCount || this.$parent.internalPageCount === 0\n },\n 'class': 'btn-next', on: {\n 'click': this.$parent.next\n }\n },\n [this.$parent.nextText ? h('span', [this.$parent.nextText]) : h('i', { 'class': 'el-icon el-icon-arrow-right' })]\n );\n }\n },\n\n Sizes: {\n mixins: [locale_default.a],\n\n props: {\n pageSizes: Array\n },\n\n watch: {\n pageSizes: {\n immediate: true,\n handler: function handler(newVal, oldVal) {\n if (Object(util_[\"valueEquals\"])(newVal, oldVal)) return;\n if (Array.isArray(newVal)) {\n this.$parent.internalPageSize = newVal.indexOf(this.$parent.pageSize) > -1 ? this.$parent.pageSize : this.pageSizes[0];\n }\n }\n }\n },\n\n render: function render(h) {\n var _this = this;\n\n return h(\n 'span',\n { 'class': 'el-pagination__sizes' },\n [h(\n 'el-select',\n {\n attrs: {\n value: this.$parent.internalPageSize,\n popperClass: this.$parent.popperClass || '',\n size: 'mini',\n\n disabled: this.$parent.disabled },\n on: {\n 'input': this.handleChange\n }\n },\n [this.pageSizes.map(function (item) {\n return h('el-option', {\n attrs: {\n value: item,\n label: item + _this.t('el.pagination.pagesize') }\n });\n })]\n )]\n );\n },\n\n\n components: {\n ElSelect: select_default.a,\n ElOption: option_default.a\n },\n\n methods: {\n handleChange: function handleChange(val) {\n if (val !== this.$parent.internalPageSize) {\n this.$parent.internalPageSize = val = parseInt(val, 10);\n this.$parent.userChangePageSize = true;\n this.$parent.$emit('update:pageSize', val);\n this.$parent.$emit('size-change', val);\n }\n }\n }\n },\n\n Jumper: {\n mixins: [locale_default.a],\n\n components: { ElInput: input_default.a },\n\n data: function data() {\n return {\n userInput: null\n };\n },\n\n\n watch: {\n '$parent.internalCurrentPage': function $parentInternalCurrentPage() {\n this.userInput = null;\n }\n },\n\n methods: {\n handleKeyup: function handleKeyup(_ref) {\n var keyCode = _ref.keyCode,\n target = _ref.target;\n\n // Chrome, Safari, Firefox triggers change event on Enter\n // Hack for IE: https://github.com/ElemeFE/element/issues/11710\n // Drop this method when we no longer supports IE\n if (keyCode === 13) {\n this.handleChange(target.value);\n }\n },\n handleInput: function handleInput(value) {\n this.userInput = value;\n },\n handleChange: function handleChange(value) {\n this.$parent.internalCurrentPage = this.$parent.getValidCurrentPage(value);\n this.$parent.emitChange();\n this.userInput = null;\n }\n },\n\n render: function render(h) {\n return h(\n 'span',\n { 'class': 'el-pagination__jump' },\n [this.t('el.pagination.goto'), h('el-input', {\n 'class': 'el-pagination__editor is-in-pagination',\n attrs: { min: 1,\n max: this.$parent.internalPageCount,\n value: this.userInput !== null ? this.userInput : this.$parent.internalCurrentPage,\n type: 'number',\n disabled: this.$parent.disabled\n },\n nativeOn: {\n 'keyup': this.handleKeyup\n },\n on: {\n 'input': this.handleInput,\n 'change': this.handleChange\n }\n }), this.t('el.pagination.pageClassifier')]\n );\n }\n },\n\n Total: {\n mixins: [locale_default.a],\n\n render: function render(h) {\n return typeof this.$parent.total === 'number' ? h(\n 'span',\n { 'class': 'el-pagination__total' },\n [this.t('el.pagination.total', { total: this.$parent.total })]\n ) : '';\n }\n },\n\n Pager: pager\n },\n\n methods: {\n handleCurrentChange: function handleCurrentChange(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n this.userChangePageSize = true;\n this.emitChange();\n },\n prev: function prev() {\n if (this.disabled) return;\n var newVal = this.internalCurrentPage - 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('prev-click', this.internalCurrentPage);\n this.emitChange();\n },\n next: function next() {\n if (this.disabled) return;\n var newVal = this.internalCurrentPage + 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('next-click', this.internalCurrentPage);\n this.emitChange();\n },\n getValidCurrentPage: function getValidCurrentPage(value) {\n value = parseInt(value, 10);\n\n var havePageCount = typeof this.internalPageCount === 'number';\n\n var resetValue = void 0;\n if (!havePageCount) {\n if (isNaN(value) || value < 1) resetValue = 1;\n } else {\n if (value < 1) {\n resetValue = 1;\n } else if (value > this.internalPageCount) {\n resetValue = this.internalPageCount;\n }\n }\n\n if (resetValue === undefined && isNaN(value)) {\n resetValue = 1;\n } else if (resetValue === 0) {\n resetValue = 1;\n }\n\n return resetValue === undefined ? value : resetValue;\n },\n emitChange: function emitChange() {\n var _this2 = this;\n\n this.$nextTick(function () {\n if (_this2.internalCurrentPage !== _this2.lastEmittedPage || _this2.userChangePageSize) {\n _this2.$emit('current-change', _this2.internalCurrentPage);\n _this2.lastEmittedPage = _this2.internalCurrentPage;\n _this2.userChangePageSize = false;\n }\n });\n }\n },\n\n computed: {\n internalPageCount: function internalPageCount() {\n if (typeof this.total === 'number') {\n return Math.max(1, Math.ceil(this.total / this.internalPageSize));\n } else if (typeof this.pageCount === 'number') {\n return Math.max(1, this.pageCount);\n }\n return null;\n }\n },\n\n watch: {\n currentPage: {\n immediate: true,\n handler: function handler(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n }\n },\n\n pageSize: {\n immediate: true,\n handler: function handler(val) {\n this.internalPageSize = isNaN(val) ? 10 : val;\n }\n },\n\n internalCurrentPage: {\n immediate: true,\n handler: function handler(newVal) {\n this.$emit('update:currentPage', newVal);\n this.lastEmittedPage = -1;\n }\n },\n\n internalPageCount: function internalPageCount(newVal) {\n /* istanbul ignore if */\n var oldPage = this.internalCurrentPage;\n if (newVal > 0 && oldPage === 0) {\n this.internalCurrentPage = 1;\n } else if (oldPage > newVal) {\n this.internalCurrentPage = newVal === 0 ? 1 : newVal;\n this.userChangePageSize && this.emitChange();\n }\n this.userChangePageSize = false;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/pagination/index.js\n\n\n/* istanbul ignore next */\npagination.install = function (Vue) {\n Vue.component(pagination.name, pagination);\n};\n\n/* harmony default export */ var packages_pagination = (pagination);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dialog/src/component.vue?vue&type=template&id=60140e62&\nvar componentvue_type_template_id_60140e62_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"dialog-fade\" },\n on: { \"after-enter\": _vm.afterEnter, \"after-leave\": _vm.afterLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-dialog__wrapper\",\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.handleWrapperClick($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n key: _vm.key,\n ref: \"dialog\",\n class: [\n \"el-dialog\",\n {\n \"is-fullscreen\": _vm.fullscreen,\n \"el-dialog--center\": _vm.center\n },\n _vm.customClass\n ],\n style: _vm.style,\n attrs: {\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": _vm.title || \"dialog\"\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-dialog__header\" },\n [\n _vm._t(\"title\", [\n _c(\"span\", { staticClass: \"el-dialog__title\" }, [\n _vm._v(_vm._s(_vm.title))\n ])\n ]),\n _vm.showClose\n ? _c(\n \"button\",\n {\n staticClass: \"el-dialog__headerbtn\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: { click: _vm.handleClose }\n },\n [\n _c(\"i\", {\n staticClass:\n \"el-dialog__close el-icon el-icon-close\"\n })\n ]\n )\n : _vm._e()\n ],\n 2\n ),\n _vm.rendered\n ? _c(\n \"div\",\n { staticClass: \"el-dialog__body\" },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e(),\n _vm.$slots.footer\n ? _c(\n \"div\",\n { staticClass: \"el-dialog__footer\" },\n [_vm._t(\"footer\")],\n 2\n )\n : _vm._e()\n ]\n )\n ]\n )\n ]\n )\n}\nvar componentvue_type_template_id_60140e62_staticRenderFns = []\ncomponentvue_type_template_id_60140e62_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dialog/src/component.vue?vue&type=template&id=60140e62&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/popup\"\nvar popup_ = __webpack_require__(13);\nvar popup_default = /*#__PURE__*/__webpack_require__.n(popup_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/migrating\"\nvar migrating_ = __webpack_require__(9);\nvar migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(3);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dialog/src/component.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var componentvue_type_script_lang_js_ = ({\n name: 'ElDialog',\n\n mixins: [popup_default.a, emitter_default.a, migrating_default.a],\n\n props: {\n title: {\n type: String,\n default: ''\n },\n\n modal: {\n type: Boolean,\n default: true\n },\n\n modalAppendToBody: {\n type: Boolean,\n default: true\n },\n\n appendToBody: {\n type: Boolean,\n default: false\n },\n\n lockScroll: {\n type: Boolean,\n default: true\n },\n\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n\n showClose: {\n type: Boolean,\n default: true\n },\n\n width: String,\n\n fullscreen: Boolean,\n\n customClass: {\n type: String,\n default: ''\n },\n\n top: {\n type: String,\n default: '15vh'\n },\n beforeClose: Function,\n center: {\n type: Boolean,\n default: false\n },\n\n destroyOnClose: Boolean\n },\n\n data: function data() {\n return {\n closed: false,\n key: 0\n };\n },\n\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.closed = false;\n this.$emit('open');\n this.$el.addEventListener('scroll', this.updatePopper);\n this.$nextTick(function () {\n _this.$refs.dialog.scrollTop = 0;\n });\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n } else {\n this.$el.removeEventListener('scroll', this.updatePopper);\n if (!this.closed) this.$emit('close');\n if (this.destroyOnClose) {\n this.$nextTick(function () {\n _this.key++;\n });\n }\n }\n }\n },\n\n computed: {\n style: function style() {\n var style = {};\n if (!this.fullscreen) {\n style.marginTop = this.top;\n if (this.width) {\n style.width = this.width;\n }\n }\n return style;\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'size': 'size is removed.'\n }\n };\n },\n handleWrapperClick: function handleWrapperClick() {\n if (!this.closeOnClickModal) return;\n this.handleClose();\n },\n handleClose: function handleClose() {\n if (typeof this.beforeClose === 'function') {\n this.beforeClose(this.hide);\n } else {\n this.hide();\n }\n },\n hide: function hide(cancel) {\n if (cancel !== false) {\n this.$emit('update:visible', false);\n this.$emit('close');\n this.closed = true;\n }\n },\n updatePopper: function updatePopper() {\n this.broadcast('ElSelectDropdown', 'updatePopper');\n this.broadcast('ElDropdownMenu', 'updatePopper');\n },\n afterEnter: function afterEnter() {\n this.$emit('opened');\n },\n afterLeave: function afterLeave() {\n this.$emit('closed');\n }\n },\n\n mounted: function mounted() {\n if (this.visible) {\n this.rendered = true;\n this.open();\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n }\n },\n destroyed: function destroyed() {\n // if appendToBody is true, remove DOM node after destroy\n if (this.appendToBody && this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dialog/src/component.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_componentvue_type_script_lang_js_ = (componentvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dialog/src/component.vue\n\n\n\n\n\n/* normalize component */\n\nvar component_component = normalizeComponent(\n src_componentvue_type_script_lang_js_,\n componentvue_type_template_id_60140e62_render,\n componentvue_type_template_id_60140e62_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var component_api; }\ncomponent_component.options.__file = \"packages/dialog/src/component.vue\"\n/* harmony default export */ var src_component = (component_component.exports);\n// CONCATENATED MODULE: ./packages/dialog/index.js\n\n\n/* istanbul ignore next */\nsrc_component.install = function (Vue) {\n Vue.component(src_component.name, src_component);\n};\n\n/* harmony default export */ var dialog = (src_component);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete.vue?vue&type=template&id=152f2ee6&\nvar autocompletevue_type_template_id_152f2ee6_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.close,\n expression: \"close\"\n }\n ],\n staticClass: \"el-autocomplete\",\n attrs: {\n \"aria-haspopup\": \"listbox\",\n role: \"combobox\",\n \"aria-expanded\": _vm.suggestionVisible,\n \"aria-owns\": _vm.id\n }\n },\n [\n _c(\n \"el-input\",\n _vm._b(\n {\n ref: \"input\",\n on: {\n input: _vm.handleInput,\n change: _vm.handleChange,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n clear: _vm.handleClear\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.highlight(_vm.highlightedIndex - 1)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.highlight(_vm.highlightedIndex + 1)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.handleKeyEnter($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n return _vm.close($event)\n }\n ]\n }\n },\n \"el-input\",\n [_vm.$props, _vm.$attrs],\n false\n ),\n [\n _vm.$slots.prepend\n ? _c(\"template\", { slot: \"prepend\" }, [_vm._t(\"prepend\")], 2)\n : _vm._e(),\n _vm.$slots.append\n ? _c(\"template\", { slot: \"append\" }, [_vm._t(\"append\")], 2)\n : _vm._e(),\n _vm.$slots.prefix\n ? _c(\"template\", { slot: \"prefix\" }, [_vm._t(\"prefix\")], 2)\n : _vm._e(),\n _vm.$slots.suffix\n ? _c(\"template\", { slot: \"suffix\" }, [_vm._t(\"suffix\")], 2)\n : _vm._e()\n ],\n 2\n ),\n _c(\n \"el-autocomplete-suggestions\",\n {\n ref: \"suggestions\",\n class: [_vm.popperClass ? _vm.popperClass : \"\"],\n attrs: {\n \"visible-arrow\": \"\",\n \"popper-options\": _vm.popperOptions,\n \"append-to-body\": _vm.popperAppendToBody,\n placement: _vm.placement,\n id: _vm.id\n }\n },\n _vm._l(_vm.suggestions, function(item, index) {\n return _c(\n \"li\",\n {\n key: index,\n class: { highlighted: _vm.highlightedIndex === index },\n attrs: {\n id: _vm.id + \"-item-\" + index,\n role: \"option\",\n \"aria-selected\": _vm.highlightedIndex === index\n },\n on: {\n click: function($event) {\n _vm.select(item)\n }\n }\n },\n [\n _vm._t(\n \"default\",\n [\n _vm._v(\"\\n \" + _vm._s(item[_vm.valueKey]) + \"\\n \")\n ],\n { item: item }\n )\n ],\n 2\n )\n }),\n 0\n )\n ],\n 1\n )\n}\nvar autocompletevue_type_template_id_152f2ee6_staticRenderFns = []\nautocompletevue_type_template_id_152f2ee6_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue?vue&type=template&id=152f2ee6&\n\n// EXTERNAL MODULE: external \"throttle-debounce/debounce\"\nvar debounce_ = __webpack_require__(14);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/clickoutside\"\nvar clickoutside_ = __webpack_require__(10);\nvar clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=template&id=cd10dcf0&\nvar autocomplete_suggestionsvue_type_template_id_cd10dcf0_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" }, on: { \"after-leave\": _vm.doDestroy } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-autocomplete-suggestion el-popper\",\n class: {\n \"is-loading\": !_vm.parent.hideLoading && _vm.parent.loading\n },\n style: { width: _vm.dropdownWidth },\n attrs: { role: \"region\" }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n attrs: {\n tag: \"ul\",\n \"wrap-class\": \"el-autocomplete-suggestion__wrap\",\n \"view-class\": \"el-autocomplete-suggestion__list\"\n }\n },\n [\n !_vm.parent.hideLoading && _vm.parent.loading\n ? _c(\"li\", [_c(\"i\", { staticClass: \"el-icon-loading\" })])\n : _vm._t(\"default\")\n ],\n 2\n )\n ],\n 1\n )\n ]\n )\n}\nvar autocomplete_suggestionsvue_type_template_id_cd10dcf0_staticRenderFns = []\nautocomplete_suggestionsvue_type_template_id_cd10dcf0_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=template&id=cd10dcf0&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __webpack_require__(5);\nvar vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __webpack_require__(17);\nvar scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var autocomplete_suggestionsvue_type_script_lang_js_ = ({\n components: { ElScrollbar: scrollbar_default.a },\n mixins: [vue_popper_default.a, emitter_default.a],\n\n componentName: 'ElAutocompleteSuggestions',\n\n data: function data() {\n return {\n parent: this.$parent,\n dropdownWidth: ''\n };\n },\n\n\n props: {\n options: {\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n },\n id: String\n },\n\n methods: {\n select: function select(item) {\n this.dispatch('ElAutocomplete', 'item-click', item);\n }\n },\n\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function (_) {\n _this.popperJS && _this.updatePopper();\n });\n },\n mounted: function mounted() {\n this.$parent.popperElm = this.popperElm = this.$el;\n this.referenceElm = this.$parent.$refs.input.$refs.input || this.$parent.$refs.input.$refs.textarea;\n this.referenceList = this.$el.querySelector('.el-autocomplete-suggestion__list');\n this.referenceList.setAttribute('role', 'listbox');\n this.referenceList.setAttribute('id', this.id);\n },\n created: function created() {\n var _this2 = this;\n\n this.$on('visible', function (val, inputWidth) {\n _this2.dropdownWidth = inputWidth + 'px';\n _this2.showPopper = val;\n });\n }\n});\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_autocomplete_suggestionsvue_type_script_lang_js_ = (autocomplete_suggestionsvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue\n\n\n\n\n\n/* normalize component */\n\nvar autocomplete_suggestions_component = normalizeComponent(\n src_autocomplete_suggestionsvue_type_script_lang_js_,\n autocomplete_suggestionsvue_type_template_id_cd10dcf0_render,\n autocomplete_suggestionsvue_type_template_id_cd10dcf0_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var autocomplete_suggestions_api; }\nautocomplete_suggestions_component.options.__file = \"packages/autocomplete/src/autocomplete-suggestions.vue\"\n/* harmony default export */ var autocomplete_suggestions = (autocomplete_suggestions_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __webpack_require__(22);\nvar focus_default = /*#__PURE__*/__webpack_require__.n(focus_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var autocompletevue_type_script_lang_js_ = ({\n name: 'ElAutocomplete',\n\n mixins: [emitter_default.a, focus_default()('input'), migrating_default.a],\n\n inheritAttrs: false,\n\n componentName: 'ElAutocomplete',\n\n components: {\n ElInput: input_default.a,\n ElAutocompleteSuggestions: autocomplete_suggestions\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n props: {\n valueKey: {\n type: String,\n default: 'value'\n },\n popperClass: String,\n popperOptions: Object,\n placeholder: String,\n clearable: {\n type: Boolean,\n default: false\n },\n disabled: Boolean,\n name: String,\n size: String,\n value: String,\n maxlength: Number,\n minlength: Number,\n autofocus: Boolean,\n fetchSuggestions: Function,\n triggerOnFocus: {\n type: Boolean,\n default: true\n },\n customItem: String,\n selectWhenUnmatched: {\n type: Boolean,\n default: false\n },\n prefixIcon: String,\n suffixIcon: String,\n label: String,\n debounce: {\n type: Number,\n default: 300\n },\n placement: {\n type: String,\n default: 'bottom-start'\n },\n hideLoading: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: true\n },\n highlightFirstItem: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n activated: false,\n suggestions: [],\n loading: false,\n highlightedIndex: -1,\n suggestionDisabled: false\n };\n },\n\n computed: {\n suggestionVisible: function suggestionVisible() {\n var suggestions = this.suggestions;\n var isValidData = Array.isArray(suggestions) && suggestions.length > 0;\n return (isValidData || this.loading) && this.activated;\n },\n id: function id() {\n return 'el-autocomplete-' + Object(util_[\"generateId\"])();\n }\n },\n watch: {\n suggestionVisible: function suggestionVisible(val) {\n var $input = this.getInput();\n if ($input) {\n this.broadcast('ElAutocompleteSuggestions', 'visible', [val, $input.offsetWidth]);\n }\n }\n },\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'custom-item': 'custom-item is removed, use scoped slot instead.',\n 'props': 'props is removed, use value-key instead.'\n }\n };\n },\n getData: function getData(queryString) {\n var _this = this;\n\n if (this.suggestionDisabled) {\n return;\n }\n this.loading = true;\n this.fetchSuggestions(queryString, function (suggestions) {\n _this.loading = false;\n if (_this.suggestionDisabled) {\n return;\n }\n if (Array.isArray(suggestions)) {\n _this.suggestions = suggestions;\n _this.highlightedIndex = _this.highlightFirstItem ? 0 : -1;\n } else {\n console.error('[Element Error][Autocomplete]autocomplete suggestions must be an array');\n }\n });\n },\n handleInput: function handleInput(value) {\n this.$emit('input', value);\n this.suggestionDisabled = false;\n if (!this.triggerOnFocus && !value) {\n this.suggestionDisabled = true;\n this.suggestions = [];\n return;\n }\n this.debouncedGetData(value);\n },\n handleChange: function handleChange(value) {\n this.$emit('change', value);\n },\n handleFocus: function handleFocus(event) {\n this.activated = true;\n this.$emit('focus', event);\n if (this.triggerOnFocus) {\n this.debouncedGetData(this.value);\n }\n },\n handleBlur: function handleBlur(event) {\n this.$emit('blur', event);\n },\n handleClear: function handleClear() {\n this.activated = false;\n this.$emit('clear');\n },\n close: function close(e) {\n this.activated = false;\n },\n handleKeyEnter: function handleKeyEnter(e) {\n var _this2 = this;\n\n if (this.suggestionVisible && this.highlightedIndex >= 0 && this.highlightedIndex < this.suggestions.length) {\n e.preventDefault();\n this.select(this.suggestions[this.highlightedIndex]);\n } else if (this.selectWhenUnmatched) {\n this.$emit('select', { value: this.value });\n this.$nextTick(function (_) {\n _this2.suggestions = [];\n _this2.highlightedIndex = -1;\n });\n }\n },\n select: function select(item) {\n var _this3 = this;\n\n this.$emit('input', item[this.valueKey]);\n this.$emit('select', item);\n this.$nextTick(function (_) {\n _this3.suggestions = [];\n _this3.highlightedIndex = -1;\n });\n },\n highlight: function highlight(index) {\n if (!this.suggestionVisible || this.loading) {\n return;\n }\n if (index < 0) {\n this.highlightedIndex = -1;\n return;\n }\n if (index >= this.suggestions.length) {\n index = this.suggestions.length - 1;\n }\n var suggestion = this.$refs.suggestions.$el.querySelector('.el-autocomplete-suggestion__wrap');\n var suggestionList = suggestion.querySelectorAll('.el-autocomplete-suggestion__list li');\n\n var highlightItem = suggestionList[index];\n var scrollTop = suggestion.scrollTop;\n var offsetTop = highlightItem.offsetTop;\n\n if (offsetTop + highlightItem.scrollHeight > scrollTop + suggestion.clientHeight) {\n suggestion.scrollTop += highlightItem.scrollHeight;\n }\n if (offsetTop < scrollTop) {\n suggestion.scrollTop -= highlightItem.scrollHeight;\n }\n this.highlightedIndex = index;\n var $input = this.getInput();\n $input.setAttribute('aria-activedescendant', this.id + '-item-' + this.highlightedIndex);\n },\n getInput: function getInput() {\n return this.$refs.input.getInput();\n }\n },\n mounted: function mounted() {\n var _this4 = this;\n\n this.debouncedGetData = debounce_default()(this.debounce, this.getData);\n this.$on('item-click', function (item) {\n _this4.select(item);\n });\n var $input = this.getInput();\n $input.setAttribute('role', 'textbox');\n $input.setAttribute('aria-autocomplete', 'list');\n $input.setAttribute('aria-controls', 'id');\n $input.setAttribute('aria-activedescendant', this.id + '-item-' + this.highlightedIndex);\n },\n beforeDestroy: function beforeDestroy() {\n this.$refs.suggestions.$destroy();\n }\n});\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_autocompletevue_type_script_lang_js_ = (autocompletevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue\n\n\n\n\n\n/* normalize component */\n\nvar autocomplete_component = normalizeComponent(\n src_autocompletevue_type_script_lang_js_,\n autocompletevue_type_template_id_152f2ee6_render,\n autocompletevue_type_template_id_152f2ee6_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var autocomplete_api; }\nautocomplete_component.options.__file = \"packages/autocomplete/src/autocomplete.vue\"\n/* harmony default export */ var autocomplete = (autocomplete_component.exports);\n// CONCATENATED MODULE: ./packages/autocomplete/index.js\n\n\n/* istanbul ignore next */\nautocomplete.install = function (Vue) {\n Vue.component(autocomplete.name, autocomplete);\n};\n\n/* harmony default export */ var packages_autocomplete = (autocomplete);\n// EXTERNAL MODULE: external \"element-ui/lib/button\"\nvar button_ = __webpack_require__(11);\nvar button_default = /*#__PURE__*/__webpack_require__.n(button_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/button-group\"\nvar button_group_ = __webpack_require__(28);\nvar button_group_default = /*#__PURE__*/__webpack_require__.n(button_group_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n/* harmony default export */ var dropdownvue_type_script_lang_js_ = ({\n name: 'ElDropdown',\n\n componentName: 'ElDropdown',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n directives: { Clickoutside: clickoutside_default.a },\n\n components: {\n ElButton: button_default.a,\n ElButtonGroup: button_group_default.a\n },\n\n provide: function provide() {\n return {\n dropdown: this\n };\n },\n\n\n props: {\n trigger: {\n type: String,\n default: 'hover'\n },\n type: String,\n size: {\n type: String,\n default: ''\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true\n },\n placement: {\n type: String,\n default: 'bottom-end'\n },\n visibleArrow: {\n default: true\n },\n showTimeout: {\n type: Number,\n default: 250\n },\n hideTimeout: {\n type: Number,\n default: 150\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n\n data: function data() {\n return {\n timeout: null,\n visible: false,\n triggerElm: null,\n menuItems: null,\n menuItemsArray: null,\n dropdownElm: null,\n focusing: false,\n listId: 'dropdown-menu-' + Object(util_[\"generateId\"])()\n };\n },\n\n\n computed: {\n dropdownSize: function dropdownSize() {\n return this.size || (this.$ELEMENT || {}).size;\n }\n },\n\n mounted: function mounted() {\n this.$on('menu-item-click', this.handleMenuItemClick);\n },\n\n\n watch: {\n visible: function visible(val) {\n this.broadcast('ElDropdownMenu', 'visible', val);\n this.$emit('visible-change', val);\n },\n focusing: function focusing(val) {\n var selfDefine = this.$el.querySelector('.el-dropdown-selfdefine');\n if (selfDefine) {\n // 自定义\n if (val) {\n selfDefine.className += ' focusing';\n } else {\n selfDefine.className = selfDefine.className.replace('focusing', '');\n }\n }\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'menu-align': 'menu-align is renamed to placement.'\n }\n };\n },\n show: function show() {\n var _this = this;\n\n if (this.triggerElm.disabled) return;\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this.visible = true;\n }, this.trigger === 'click' ? 0 : this.showTimeout);\n },\n hide: function hide() {\n var _this2 = this;\n\n if (this.triggerElm.disabled) return;\n this.removeTabindex();\n if (this.tabindex >= 0) {\n this.resetTabindex(this.triggerElm);\n }\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this2.visible = false;\n }, this.trigger === 'click' ? 0 : this.hideTimeout);\n },\n handleClick: function handleClick() {\n if (this.triggerElm.disabled) return;\n if (this.visible) {\n this.hide();\n } else {\n this.show();\n }\n },\n handleTriggerKeyDown: function handleTriggerKeyDown(ev) {\n var keyCode = ev.keyCode;\n if ([38, 40].indexOf(keyCode) > -1) {\n // up/down\n this.removeTabindex();\n this.resetTabindex(this.menuItems[0]);\n this.menuItems[0].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (keyCode === 13) {\n // space enter选中\n this.handleClick();\n } else if ([9, 27].indexOf(keyCode) > -1) {\n // tab || esc\n this.hide();\n }\n },\n handleItemKeyDown: function handleItemKeyDown(ev) {\n var keyCode = ev.keyCode;\n var target = ev.target;\n var currentIndex = this.menuItemsArray.indexOf(target);\n var max = this.menuItemsArray.length - 1;\n var nextIndex = void 0;\n if ([38, 40].indexOf(keyCode) > -1) {\n // up/down\n if (keyCode === 38) {\n // up\n nextIndex = currentIndex !== 0 ? currentIndex - 1 : 0;\n } else {\n // down\n nextIndex = currentIndex < max ? currentIndex + 1 : max;\n }\n this.removeTabindex();\n this.resetTabindex(this.menuItems[nextIndex]);\n this.menuItems[nextIndex].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (keyCode === 13) {\n // enter选中\n this.triggerElmFocus();\n target.click();\n if (this.hideOnClick) {\n // click关闭\n this.visible = false;\n }\n } else if ([9, 27].indexOf(keyCode) > -1) {\n // tab // esc\n this.hide();\n this.triggerElmFocus();\n }\n },\n resetTabindex: function resetTabindex(ele) {\n // 下次tab时组件聚焦元素\n this.removeTabindex();\n ele.setAttribute('tabindex', '0'); // 下次期望的聚焦元素\n },\n removeTabindex: function removeTabindex() {\n this.triggerElm.setAttribute('tabindex', '-1');\n this.menuItemsArray.forEach(function (item) {\n item.setAttribute('tabindex', '-1');\n });\n },\n initAria: function initAria() {\n this.dropdownElm.setAttribute('id', this.listId);\n this.triggerElm.setAttribute('aria-haspopup', 'list');\n this.triggerElm.setAttribute('aria-controls', this.listId);\n\n if (!this.splitButton) {\n // 自定义\n this.triggerElm.setAttribute('role', 'button');\n this.triggerElm.setAttribute('tabindex', this.tabindex);\n this.triggerElm.setAttribute('class', (this.triggerElm.getAttribute('class') || '') + ' el-dropdown-selfdefine'); // 控制\n }\n },\n initEvent: function initEvent() {\n var _this3 = this;\n\n var trigger = this.trigger,\n show = this.show,\n hide = this.hide,\n handleClick = this.handleClick,\n splitButton = this.splitButton,\n handleTriggerKeyDown = this.handleTriggerKeyDown,\n handleItemKeyDown = this.handleItemKeyDown;\n\n this.triggerElm = splitButton ? this.$refs.trigger.$el : this.$slots.default[0].elm;\n\n var dropdownElm = this.dropdownElm;\n\n this.triggerElm.addEventListener('keydown', handleTriggerKeyDown); // triggerElm keydown\n dropdownElm.addEventListener('keydown', handleItemKeyDown, true); // item keydown\n // 控制自定义元素的样式\n if (!splitButton) {\n this.triggerElm.addEventListener('focus', function () {\n _this3.focusing = true;\n });\n this.triggerElm.addEventListener('blur', function () {\n _this3.focusing = false;\n });\n this.triggerElm.addEventListener('click', function () {\n _this3.focusing = false;\n });\n }\n if (trigger === 'hover') {\n this.triggerElm.addEventListener('mouseenter', show);\n this.triggerElm.addEventListener('mouseleave', hide);\n dropdownElm.addEventListener('mouseenter', show);\n dropdownElm.addEventListener('mouseleave', hide);\n } else if (trigger === 'click') {\n this.triggerElm.addEventListener('click', handleClick);\n }\n },\n handleMenuItemClick: function handleMenuItemClick(command, instance) {\n if (this.hideOnClick) {\n this.visible = false;\n }\n this.$emit('command', command, instance);\n },\n triggerElmFocus: function triggerElmFocus() {\n this.triggerElm.focus && this.triggerElm.focus();\n },\n initDomOperation: function initDomOperation() {\n this.dropdownElm = this.popperElm;\n this.menuItems = this.dropdownElm.querySelectorAll(\"[tabindex='-1']\");\n this.menuItemsArray = [].slice.call(this.menuItems);\n\n this.initEvent();\n this.initAria();\n }\n },\n\n render: function render(h) {\n var _this4 = this;\n\n var hide = this.hide,\n splitButton = this.splitButton,\n type = this.type,\n dropdownSize = this.dropdownSize;\n\n\n var handleMainButtonClick = function handleMainButtonClick(event) {\n _this4.$emit('click', event);\n hide();\n };\n\n var triggerElm = !splitButton ? this.$slots.default : h('el-button-group', [h(\n 'el-button',\n {\n attrs: { type: type, size: dropdownSize },\n nativeOn: {\n 'click': handleMainButtonClick\n }\n },\n [this.$slots.default]\n ), h(\n 'el-button',\n { ref: 'trigger', attrs: { type: type, size: dropdownSize },\n 'class': 'el-dropdown__caret-button' },\n [h('i', { 'class': 'el-dropdown__icon el-icon-arrow-down' })]\n )]);\n\n return h(\n 'div',\n { 'class': 'el-dropdown', directives: [{\n name: 'clickoutside',\n value: hide\n }]\n },\n [triggerElm, this.$slots.dropdown]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdownvue_type_script_lang_js_ = (dropdownvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown.vue\nvar dropdown_render, dropdown_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar dropdown_component = normalizeComponent(\n src_dropdownvue_type_script_lang_js_,\n dropdown_render,\n dropdown_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_api; }\ndropdown_component.options.__file = \"packages/dropdown/src/dropdown.vue\"\n/* harmony default export */ var dropdown = (dropdown_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown/index.js\n\n\n/* istanbul ignore next */\ndropdown.install = function (Vue) {\n Vue.component(dropdown.name, dropdown);\n};\n\n/* harmony default export */ var packages_dropdown = (dropdown);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-menu.vue?vue&type=template&id=0da6b714&\nvar dropdown_menuvue_type_template_id_0da6b714_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" }, on: { \"after-leave\": _vm.doDestroy } },\n [\n _c(\n \"ul\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-dropdown-menu el-popper\",\n class: [_vm.size && \"el-dropdown-menu--\" + _vm.size]\n },\n [_vm._t(\"default\")],\n 2\n )\n ]\n )\n}\nvar dropdown_menuvue_type_template_id_0da6b714_staticRenderFns = []\ndropdown_menuvue_type_template_id_0da6b714_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue?vue&type=template&id=0da6b714&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-menu.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var dropdown_menuvue_type_script_lang_js_ = ({\n name: 'ElDropdownMenu',\n\n componentName: 'ElDropdownMenu',\n\n mixins: [vue_popper_default.a],\n\n props: {\n visibleArrow: {\n type: Boolean,\n default: true\n },\n arrowOffset: {\n type: Number,\n default: 0\n }\n },\n\n data: function data() {\n return {\n size: this.dropdown.dropdownSize\n };\n },\n\n\n inject: ['dropdown'],\n\n created: function created() {\n var _this = this;\n\n this.$on('updatePopper', function () {\n if (_this.showPopper) _this.updatePopper();\n });\n this.$on('visible', function (val) {\n _this.showPopper = val;\n });\n },\n mounted: function mounted() {\n this.dropdown.popperElm = this.popperElm = this.$el;\n this.referenceElm = this.dropdown.$el;\n // compatible with 2.6 new v-slot syntax\n // issue link https://github.com/ElemeFE/element/issues/14345\n this.dropdown.initDomOperation();\n },\n\n\n watch: {\n 'dropdown.placement': {\n immediate: true,\n handler: function handler(val) {\n this.currentPlacement = val;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdown_menuvue_type_script_lang_js_ = (dropdown_menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue\n\n\n\n\n\n/* normalize component */\n\nvar dropdown_menu_component = normalizeComponent(\n src_dropdown_menuvue_type_script_lang_js_,\n dropdown_menuvue_type_template_id_0da6b714_render,\n dropdown_menuvue_type_template_id_0da6b714_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_menu_api; }\ndropdown_menu_component.options.__file = \"packages/dropdown/src/dropdown-menu.vue\"\n/* harmony default export */ var dropdown_menu = (dropdown_menu_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown-menu/index.js\n\n\n/* istanbul ignore next */\ndropdown_menu.install = function (Vue) {\n Vue.component(dropdown_menu.name, dropdown_menu);\n};\n\n/* harmony default export */ var packages_dropdown_menu = (dropdown_menu);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-item.vue?vue&type=template&id=6359102a&\nvar dropdown_itemvue_type_template_id_6359102a_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"el-dropdown-menu__item\",\n class: {\n \"is-disabled\": _vm.disabled,\n \"el-dropdown-menu__item--divided\": _vm.divided\n },\n attrs: {\n \"aria-disabled\": _vm.disabled,\n tabindex: _vm.disabled ? null : -1\n },\n on: { click: _vm.handleClick }\n },\n [_vm.icon ? _c(\"i\", { class: _vm.icon }) : _vm._e(), _vm._t(\"default\")],\n 2\n )\n}\nvar dropdown_itemvue_type_template_id_6359102a_staticRenderFns = []\ndropdown_itemvue_type_template_id_6359102a_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue?vue&type=template&id=6359102a&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var dropdown_itemvue_type_script_lang_js_ = ({\n name: 'ElDropdownItem',\n\n mixins: [emitter_default.a],\n\n props: {\n command: {},\n disabled: Boolean,\n divided: Boolean,\n icon: String\n },\n\n methods: {\n handleClick: function handleClick(e) {\n this.dispatch('ElDropdown', 'menu-item-click', [this.command, this]);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdown_itemvue_type_script_lang_js_ = (dropdown_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar dropdown_item_component = normalizeComponent(\n src_dropdown_itemvue_type_script_lang_js_,\n dropdown_itemvue_type_template_id_6359102a_render,\n dropdown_itemvue_type_template_id_6359102a_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_item_api; }\ndropdown_item_component.options.__file = \"packages/dropdown/src/dropdown-item.vue\"\n/* harmony default export */ var dropdown_item = (dropdown_item_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown-item/index.js\n\n\n/* istanbul ignore next */\ndropdown_item.install = function (Vue) {\n Vue.component(dropdown_item.name, dropdown_item);\n};\n\n/* harmony default export */ var packages_dropdown_item = (dropdown_item);\n// CONCATENATED MODULE: ./src/utils/aria-utils.js\nvar aria = aria || {};\n\naria.Utils = aria.Utils || {};\n\n/**\n * @desc Set focus on descendant nodes until the first focusable element is\n * found.\n * @param element\n * DOM node for which to find the first focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\naria.Utils.focusFirstDescendant = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Find the last descendant node that is focusable.\n * @param element\n * DOM node for which to find the last focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\naria.Utils.focusLastDescendant = function (element) {\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Set Attempt to set focus on the current node.\n * @param element\n * The node to attempt to focus on.\n * @returns\n * true if element is focused.\n */\naria.Utils.attemptFocus = function (element) {\n if (!aria.Utils.isFocusable(element)) {\n return false;\n }\n aria.Utils.IgnoreUtilFocusChanges = true;\n try {\n element.focus();\n } catch (e) {}\n aria.Utils.IgnoreUtilFocusChanges = false;\n return document.activeElement === element;\n};\n\naria.Utils.isFocusable = function (element) {\n if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute('tabIndex') !== null) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * 触发一个事件\n * mouseenter, mouseleave, mouseover, keyup, change, click 等\n * @param {Element} elm\n * @param {String} name\n * @param {*} opts\n */\naria.Utils.triggerEvent = function (elm, name) {\n var eventName = void 0;\n\n if (/^mouse|click/.test(name)) {\n eventName = 'MouseEvents';\n } else if (/^key/.test(name)) {\n eventName = 'KeyboardEvent';\n } else {\n eventName = 'HTMLEvents';\n }\n var evt = document.createEvent(eventName);\n\n for (var _len = arguments.length, opts = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n opts[_key - 2] = arguments[_key];\n }\n\n evt.initEvent.apply(evt, [name].concat(opts));\n elm.dispatchEvent ? elm.dispatchEvent(evt) : elm.fireEvent('on' + name, evt);\n\n return elm;\n};\n\naria.Utils.keys = {\n tab: 9,\n enter: 13,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n esc: 27\n};\n\n/* harmony default export */ var aria_utils = (aria.Utils);\n// CONCATENATED MODULE: ./src/utils/menu/aria-submenu.js\n\n\nvar SubMenu = function SubMenu(parent, domNode) {\n this.domNode = domNode;\n this.parent = parent;\n this.subMenuItems = [];\n this.subIndex = 0;\n this.init();\n};\n\nSubMenu.prototype.init = function () {\n this.subMenuItems = this.domNode.querySelectorAll('li');\n this.addListeners();\n};\n\nSubMenu.prototype.gotoSubIndex = function (idx) {\n if (idx === this.subMenuItems.length) {\n idx = 0;\n } else if (idx < 0) {\n idx = this.subMenuItems.length - 1;\n }\n this.subMenuItems[idx].focus();\n this.subIndex = idx;\n};\n\nSubMenu.prototype.addListeners = function () {\n var _this = this;\n\n var keys = aria_utils.keys;\n var parentNode = this.parent.domNode;\n Array.prototype.forEach.call(this.subMenuItems, function (el) {\n el.addEventListener('keydown', function (event) {\n var prevDef = false;\n switch (event.keyCode) {\n case keys.down:\n _this.gotoSubIndex(_this.subIndex + 1);\n prevDef = true;\n break;\n case keys.up:\n _this.gotoSubIndex(_this.subIndex - 1);\n prevDef = true;\n break;\n case keys.tab:\n aria_utils.triggerEvent(parentNode, 'mouseleave');\n break;\n case keys.enter:\n case keys.space:\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n if (prevDef) {\n event.preventDefault();\n event.stopPropagation();\n }\n return false;\n });\n });\n};\n\n/* harmony default export */ var aria_submenu = (SubMenu);\n// CONCATENATED MODULE: ./src/utils/menu/aria-menuitem.js\n\n\n\nvar MenuItem = function MenuItem(domNode) {\n this.domNode = domNode;\n this.submenu = null;\n this.init();\n};\n\nMenuItem.prototype.init = function () {\n this.domNode.setAttribute('tabindex', '0');\n var menuChild = this.domNode.querySelector('.el-menu');\n if (menuChild) {\n this.submenu = new aria_submenu(this, menuChild);\n }\n this.addListeners();\n};\n\nMenuItem.prototype.addListeners = function () {\n var _this = this;\n\n var keys = aria_utils.keys;\n this.domNode.addEventListener('keydown', function (event) {\n var prevDef = false;\n switch (event.keyCode) {\n case keys.down:\n aria_utils.triggerEvent(event.currentTarget, 'mouseenter');\n _this.submenu && _this.submenu.gotoSubIndex(0);\n prevDef = true;\n break;\n case keys.up:\n aria_utils.triggerEvent(event.currentTarget, 'mouseenter');\n _this.submenu && _this.submenu.gotoSubIndex(_this.submenu.subMenuItems.length - 1);\n prevDef = true;\n break;\n case keys.tab:\n aria_utils.triggerEvent(event.currentTarget, 'mouseleave');\n break;\n case keys.enter:\n case keys.space:\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n if (prevDef) {\n event.preventDefault();\n }\n });\n};\n\n/* harmony default export */ var aria_menuitem = (MenuItem);\n// CONCATENATED MODULE: ./src/utils/menu/aria-menubar.js\n\n\nvar Menu = function Menu(domNode) {\n this.domNode = domNode;\n this.init();\n};\n\nMenu.prototype.init = function () {\n var menuChildren = this.domNode.childNodes;\n [].filter.call(menuChildren, function (child) {\n return child.nodeType === 1;\n }).forEach(function (child) {\n new aria_menuitem(child); // eslint-disable-line\n });\n};\n/* harmony default export */ var aria_menubar = (Menu);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/dom\"\nvar dom_ = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n/* harmony default export */ var menuvue_type_script_lang_js_ = ({\n name: 'ElMenu',\n\n render: function render(h) {\n var component = h(\n 'ul',\n {\n attrs: {\n role: 'menubar'\n },\n key: +this.collapse,\n style: { backgroundColor: this.backgroundColor || '' },\n 'class': {\n 'el-menu--horizontal': this.mode === 'horizontal',\n 'el-menu--collapse': this.collapse,\n \"el-menu\": true\n }\n },\n [this.$slots.default]\n );\n\n if (this.collapseTransition) {\n return h('el-menu-collapse-transition', [component]);\n } else {\n return component;\n }\n },\n\n\n componentName: 'ElMenu',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n provide: function provide() {\n return {\n rootMenu: this\n };\n },\n\n\n components: {\n 'el-menu-collapse-transition': {\n functional: true,\n render: function render(createElement, context) {\n var data = {\n props: {\n mode: 'out-in'\n },\n on: {\n beforeEnter: function beforeEnter(el) {\n el.style.opacity = 0.2;\n },\n enter: function enter(el) {\n Object(dom_[\"addClass\"])(el, 'el-opacity-transition');\n el.style.opacity = 1;\n },\n afterEnter: function afterEnter(el) {\n Object(dom_[\"removeClass\"])(el, 'el-opacity-transition');\n el.style.opacity = '';\n },\n beforeLeave: function beforeLeave(el) {\n if (!el.dataset) el.dataset = {};\n\n if (Object(dom_[\"hasClass\"])(el, 'el-menu--collapse')) {\n Object(dom_[\"removeClass\"])(el, 'el-menu--collapse');\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth;\n Object(dom_[\"addClass\"])(el, 'el-menu--collapse');\n } else {\n Object(dom_[\"addClass\"])(el, 'el-menu--collapse');\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth;\n Object(dom_[\"removeClass\"])(el, 'el-menu--collapse');\n }\n\n el.style.width = el.scrollWidth + 'px';\n el.style.overflow = 'hidden';\n },\n leave: function leave(el) {\n Object(dom_[\"addClass\"])(el, 'horizontal-collapse-transition');\n el.style.width = el.dataset.scrollWidth + 'px';\n }\n }\n };\n return createElement('transition', data, context.children);\n }\n }\n },\n\n props: {\n mode: {\n type: String,\n default: 'vertical'\n },\n defaultActive: {\n type: String,\n default: ''\n },\n defaultOpeneds: Array,\n uniqueOpened: Boolean,\n router: Boolean,\n menuTrigger: {\n type: String,\n default: 'hover'\n },\n collapse: Boolean,\n backgroundColor: String,\n textColor: String,\n activeTextColor: String,\n collapseTransition: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n activeIndex: this.defaultActive,\n openedMenus: this.defaultOpeneds && !this.collapse ? this.defaultOpeneds.slice(0) : [],\n items: {},\n submenus: {}\n };\n },\n\n computed: {\n hoverBackground: function hoverBackground() {\n return this.backgroundColor ? this.mixColor(this.backgroundColor, 0.2) : '';\n },\n isMenuPopup: function isMenuPopup() {\n return this.mode === 'horizontal' || this.mode === 'vertical' && this.collapse;\n }\n },\n watch: {\n defaultActive: function defaultActive(value) {\n if (!this.items[value]) {\n this.activeIndex = null;\n }\n this.updateActiveIndex(value);\n },\n defaultOpeneds: function defaultOpeneds(value) {\n if (!this.collapse) {\n this.openedMenus = value;\n }\n },\n collapse: function collapse(value) {\n if (value) this.openedMenus = [];\n this.broadcast('ElSubmenu', 'toggle-collapse', value);\n }\n },\n methods: {\n updateActiveIndex: function updateActiveIndex(val) {\n var item = this.items[val] || this.items[this.activeIndex] || this.items[this.defaultActive];\n if (item) {\n this.activeIndex = item.index;\n this.initOpenedMenu();\n } else {\n this.activeIndex = null;\n }\n },\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'theme': 'theme is removed.'\n }\n };\n },\n getColorChannels: function getColorChannels(color) {\n color = color.replace('#', '');\n if (/^[0-9a-fA-F]{3}$/.test(color)) {\n color = color.split('');\n for (var i = 2; i >= 0; i--) {\n color.splice(i, 0, color[i]);\n }\n color = color.join('');\n }\n if (/^[0-9a-fA-F]{6}$/.test(color)) {\n return {\n red: parseInt(color.slice(0, 2), 16),\n green: parseInt(color.slice(2, 4), 16),\n blue: parseInt(color.slice(4, 6), 16)\n };\n } else {\n return {\n red: 255,\n green: 255,\n blue: 255\n };\n }\n },\n mixColor: function mixColor(color, percent) {\n var _getColorChannels = this.getColorChannels(color),\n red = _getColorChannels.red,\n green = _getColorChannels.green,\n blue = _getColorChannels.blue;\n\n if (percent > 0) {\n // shade given color\n red *= 1 - percent;\n green *= 1 - percent;\n blue *= 1 - percent;\n } else {\n // tint given color\n red += (255 - red) * percent;\n green += (255 - green) * percent;\n blue += (255 - blue) * percent;\n }\n return 'rgb(' + Math.round(red) + ', ' + Math.round(green) + ', ' + Math.round(blue) + ')';\n },\n addItem: function addItem(item) {\n this.$set(this.items, item.index, item);\n },\n removeItem: function removeItem(item) {\n delete this.items[item.index];\n },\n addSubmenu: function addSubmenu(item) {\n this.$set(this.submenus, item.index, item);\n },\n removeSubmenu: function removeSubmenu(item) {\n delete this.submenus[item.index];\n },\n openMenu: function openMenu(index, indexPath) {\n var openedMenus = this.openedMenus;\n if (openedMenus.indexOf(index) !== -1) return;\n // 将不在该菜单路径下的其余菜单收起\n // collapse all menu that are not under current menu item\n if (this.uniqueOpened) {\n this.openedMenus = openedMenus.filter(function (index) {\n return indexPath.indexOf(index) !== -1;\n });\n }\n this.openedMenus.push(index);\n },\n closeMenu: function closeMenu(index) {\n var i = this.openedMenus.indexOf(index);\n if (i !== -1) {\n this.openedMenus.splice(i, 1);\n }\n },\n handleSubmenuClick: function handleSubmenuClick(submenu) {\n var index = submenu.index,\n indexPath = submenu.indexPath;\n\n var isOpened = this.openedMenus.indexOf(index) !== -1;\n\n if (isOpened) {\n this.closeMenu(index);\n this.$emit('close', index, indexPath);\n } else {\n this.openMenu(index, indexPath);\n this.$emit('open', index, indexPath);\n }\n },\n handleItemClick: function handleItemClick(item) {\n var _this = this;\n\n var index = item.index,\n indexPath = item.indexPath;\n\n var oldActiveIndex = this.activeIndex;\n var hasIndex = item.index !== null;\n\n if (hasIndex) {\n this.activeIndex = item.index;\n }\n\n this.$emit('select', index, indexPath, item);\n\n if (this.mode === 'horizontal' || this.collapse) {\n this.openedMenus = [];\n }\n\n if (this.router && hasIndex) {\n this.routeToItem(item, function (error) {\n _this.activeIndex = oldActiveIndex;\n if (error) {\n // vue-router 3.1.0+ push/replace cause NavigationDuplicated error \n // https://github.com/ElemeFE/element/issues/17044\n if (error.name === 'NavigationDuplicated') return;\n console.error(error);\n }\n });\n }\n },\n\n // 初始化展开菜单\n // initialize opened menu\n initOpenedMenu: function initOpenedMenu() {\n var _this2 = this;\n\n var index = this.activeIndex;\n var activeItem = this.items[index];\n if (!activeItem || this.mode === 'horizontal' || this.collapse) return;\n\n var indexPath = activeItem.indexPath;\n\n // 展开该菜单项的路径上所有子菜单\n // expand all submenus of the menu item\n indexPath.forEach(function (index) {\n var submenu = _this2.submenus[index];\n submenu && _this2.openMenu(index, submenu.indexPath);\n });\n },\n routeToItem: function routeToItem(item, onError) {\n var route = item.route || item.index;\n try {\n this.$router.push(route, function () {}, onError);\n } catch (e) {\n console.error(e);\n }\n },\n open: function open(index) {\n var _this3 = this;\n\n var indexPath = this.submenus[index.toString()].indexPath;\n\n indexPath.forEach(function (i) {\n return _this3.openMenu(i, indexPath);\n });\n },\n close: function close(index) {\n this.closeMenu(index);\n }\n },\n mounted: function mounted() {\n this.initOpenedMenu();\n this.$on('item-click', this.handleItemClick);\n this.$on('submenu-click', this.handleSubmenuClick);\n if (this.mode === 'horizontal') {\n new aria_menubar(this.$el); // eslint-disable-line\n }\n this.$watch('items', this.updateActiveIndex);\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menuvue_type_script_lang_js_ = (menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu.vue\nvar menu_render, menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar menu_component = normalizeComponent(\n src_menuvue_type_script_lang_js_,\n menu_render,\n menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_api; }\nmenu_component.options.__file = \"packages/menu/src/menu.vue\"\n/* harmony default export */ var src_menu = (menu_component.exports);\n// CONCATENATED MODULE: ./packages/menu/index.js\n\n\n/* istanbul ignore next */\nsrc_menu.install = function (Vue) {\n Vue.component(src_menu.name, src_menu);\n};\n\n/* harmony default export */ var packages_menu = (src_menu);\n// EXTERNAL MODULE: external \"element-ui/lib/transitions/collapse-transition\"\nvar collapse_transition_ = __webpack_require__(21);\nvar collapse_transition_default = /*#__PURE__*/__webpack_require__.n(collapse_transition_);\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-mixin.js\n/* harmony default export */ var menu_mixin = ({\n inject: ['rootMenu'],\n computed: {\n indexPath: function indexPath() {\n var path = [this.index];\n var parent = this.$parent;\n while (parent.$options.componentName !== 'ElMenu') {\n if (parent.index) {\n path.unshift(parent.index);\n }\n parent = parent.$parent;\n }\n return path;\n },\n parentMenu: function parentMenu() {\n var parent = this.$parent;\n while (parent && ['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1) {\n parent = parent.$parent;\n }\n return parent;\n },\n paddingStyle: function paddingStyle() {\n if (this.rootMenu.mode !== 'vertical') return {};\n\n var padding = 20;\n var parent = this.$parent;\n\n if (this.rootMenu.collapse) {\n padding = 20;\n } else {\n while (parent && parent.$options.componentName !== 'ElMenu') {\n if (parent.$options.componentName === 'ElSubmenu') {\n padding += 20;\n }\n parent = parent.$parent;\n }\n }\n return { paddingLeft: padding + 'px' };\n }\n }\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/submenu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nvar poperMixins = {\n props: {\n transformOrigin: {\n type: [Boolean, String],\n default: false\n },\n offset: vue_popper_default.a.props.offset,\n boundariesPadding: vue_popper_default.a.props.boundariesPadding,\n popperOptions: vue_popper_default.a.props.popperOptions\n },\n data: vue_popper_default.a.data,\n methods: vue_popper_default.a.methods,\n beforeDestroy: vue_popper_default.a.beforeDestroy,\n deactivated: vue_popper_default.a.deactivated\n};\n\n/* harmony default export */ var submenuvue_type_script_lang_js_ = ({\n name: 'ElSubmenu',\n\n componentName: 'ElSubmenu',\n\n mixins: [menu_mixin, emitter_default.a, poperMixins],\n\n components: { ElCollapseTransition: collapse_transition_default.a },\n\n props: {\n index: {\n type: String,\n required: true\n },\n showTimeout: {\n type: Number,\n default: 300\n },\n hideTimeout: {\n type: Number,\n default: 300\n },\n popperClass: String,\n disabled: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: undefined\n }\n },\n\n data: function data() {\n return {\n popperJS: null,\n timeout: null,\n items: {},\n submenus: {},\n mouseInChild: false\n };\n },\n\n watch: {\n opened: function opened(val) {\n var _this = this;\n\n if (this.isMenuPopup) {\n this.$nextTick(function (_) {\n _this.updatePopper();\n });\n }\n }\n },\n computed: {\n // popper option\n appendToBody: function appendToBody() {\n return this.popperAppendToBody === undefined ? this.isFirstLevel : this.popperAppendToBody;\n },\n menuTransitionName: function menuTransitionName() {\n return this.rootMenu.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top';\n },\n opened: function opened() {\n return this.rootMenu.openedMenus.indexOf(this.index) > -1;\n },\n active: function active() {\n var isActive = false;\n var submenus = this.submenus;\n var items = this.items;\n\n Object.keys(items).forEach(function (index) {\n if (items[index].active) {\n isActive = true;\n }\n });\n\n Object.keys(submenus).forEach(function (index) {\n if (submenus[index].active) {\n isActive = true;\n }\n });\n\n return isActive;\n },\n hoverBackground: function hoverBackground() {\n return this.rootMenu.hoverBackground;\n },\n backgroundColor: function backgroundColor() {\n return this.rootMenu.backgroundColor || '';\n },\n activeTextColor: function activeTextColor() {\n return this.rootMenu.activeTextColor || '';\n },\n textColor: function textColor() {\n return this.rootMenu.textColor || '';\n },\n mode: function mode() {\n return this.rootMenu.mode;\n },\n isMenuPopup: function isMenuPopup() {\n return this.rootMenu.isMenuPopup;\n },\n titleStyle: function titleStyle() {\n if (this.mode !== 'horizontal') {\n return {\n color: this.textColor\n };\n }\n return {\n borderBottomColor: this.active ? this.rootMenu.activeTextColor ? this.activeTextColor : '' : 'transparent',\n color: this.active ? this.activeTextColor : this.textColor\n };\n },\n isFirstLevel: function isFirstLevel() {\n var isFirstLevel = true;\n var parent = this.$parent;\n while (parent && parent !== this.rootMenu) {\n if (['ElSubmenu', 'ElMenuItemGroup'].indexOf(parent.$options.componentName) > -1) {\n isFirstLevel = false;\n break;\n } else {\n parent = parent.$parent;\n }\n }\n return isFirstLevel;\n }\n },\n methods: {\n handleCollapseToggle: function handleCollapseToggle(value) {\n if (value) {\n this.initPopper();\n } else {\n this.doDestroy();\n }\n },\n addItem: function addItem(item) {\n this.$set(this.items, item.index, item);\n },\n removeItem: function removeItem(item) {\n delete this.items[item.index];\n },\n addSubmenu: function addSubmenu(item) {\n this.$set(this.submenus, item.index, item);\n },\n removeSubmenu: function removeSubmenu(item) {\n delete this.submenus[item.index];\n },\n handleClick: function handleClick() {\n var rootMenu = this.rootMenu,\n disabled = this.disabled;\n\n if (rootMenu.menuTrigger === 'hover' && rootMenu.mode === 'horizontal' || rootMenu.collapse && rootMenu.mode === 'vertical' || disabled) {\n return;\n }\n this.dispatch('ElMenu', 'submenu-click', this);\n },\n handleMouseenter: function handleMouseenter(event) {\n var _this2 = this;\n\n var showTimeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.showTimeout;\n\n\n if (!('ActiveXObject' in window) && event.type === 'focus' && !event.relatedTarget) {\n return;\n }\n var rootMenu = this.rootMenu,\n disabled = this.disabled;\n\n if (rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal' || !rootMenu.collapse && rootMenu.mode === 'vertical' || disabled) {\n return;\n }\n this.dispatch('ElSubmenu', 'mouse-enter-child');\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this2.rootMenu.openMenu(_this2.index, _this2.indexPath);\n }, showTimeout);\n\n if (this.appendToBody) {\n this.$parent.$el.dispatchEvent(new MouseEvent('mouseenter'));\n }\n },\n handleMouseleave: function handleMouseleave() {\n var _this3 = this;\n\n var deepDispatch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var rootMenu = this.rootMenu;\n\n if (rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal' || !rootMenu.collapse && rootMenu.mode === 'vertical') {\n return;\n }\n this.dispatch('ElSubmenu', 'mouse-leave-child');\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n !_this3.mouseInChild && _this3.rootMenu.closeMenu(_this3.index);\n }, this.hideTimeout);\n\n if (this.appendToBody && deepDispatch) {\n if (this.$parent.$options.name === 'ElSubmenu') {\n this.$parent.handleMouseleave(true);\n }\n }\n },\n handleTitleMouseenter: function handleTitleMouseenter() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n var title = this.$refs['submenu-title'];\n title && (title.style.backgroundColor = this.rootMenu.hoverBackground);\n },\n handleTitleMouseleave: function handleTitleMouseleave() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n var title = this.$refs['submenu-title'];\n title && (title.style.backgroundColor = this.rootMenu.backgroundColor || '');\n },\n updatePlacement: function updatePlacement() {\n this.currentPlacement = this.mode === 'horizontal' && this.isFirstLevel ? 'bottom-start' : 'right-start';\n },\n initPopper: function initPopper() {\n this.referenceElm = this.$el;\n this.popperElm = this.$refs.menu;\n this.updatePlacement();\n }\n },\n created: function created() {\n var _this4 = this;\n\n this.$on('toggle-collapse', this.handleCollapseToggle);\n this.$on('mouse-enter-child', function () {\n _this4.mouseInChild = true;\n clearTimeout(_this4.timeout);\n });\n this.$on('mouse-leave-child', function () {\n _this4.mouseInChild = false;\n clearTimeout(_this4.timeout);\n });\n },\n mounted: function mounted() {\n this.parentMenu.addSubmenu(this);\n this.rootMenu.addSubmenu(this);\n this.initPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.parentMenu.removeSubmenu(this);\n this.rootMenu.removeSubmenu(this);\n },\n render: function render(h) {\n var _this5 = this;\n\n var active = this.active,\n opened = this.opened,\n paddingStyle = this.paddingStyle,\n titleStyle = this.titleStyle,\n backgroundColor = this.backgroundColor,\n rootMenu = this.rootMenu,\n currentPlacement = this.currentPlacement,\n menuTransitionName = this.menuTransitionName,\n mode = this.mode,\n disabled = this.disabled,\n popperClass = this.popperClass,\n $slots = this.$slots,\n isFirstLevel = this.isFirstLevel;\n\n\n var popupMenu = h(\n 'transition',\n {\n attrs: { name: menuTransitionName }\n },\n [h(\n 'div',\n {\n ref: 'menu',\n directives: [{\n name: 'show',\n value: opened\n }],\n\n 'class': ['el-menu--' + mode, popperClass],\n on: {\n 'mouseenter': function mouseenter($event) {\n return _this5.handleMouseenter($event, 100);\n },\n 'mouseleave': function mouseleave() {\n return _this5.handleMouseleave(true);\n },\n 'focus': function focus($event) {\n return _this5.handleMouseenter($event, 100);\n }\n }\n },\n [h(\n 'ul',\n {\n attrs: {\n role: 'menu'\n },\n 'class': ['el-menu el-menu--popup', 'el-menu--popup-' + currentPlacement],\n style: { backgroundColor: rootMenu.backgroundColor || '' } },\n [$slots.default]\n )]\n )]\n );\n\n var inlineMenu = h('el-collapse-transition', [h(\n 'ul',\n {\n attrs: {\n role: 'menu'\n },\n 'class': 'el-menu el-menu--inline',\n directives: [{\n name: 'show',\n value: opened\n }],\n\n style: { backgroundColor: rootMenu.backgroundColor || '' } },\n [$slots.default]\n )]);\n\n var submenuTitleIcon = rootMenu.mode === 'horizontal' && isFirstLevel || rootMenu.mode === 'vertical' && !rootMenu.collapse ? 'el-icon-arrow-down' : 'el-icon-arrow-right';\n\n return h(\n 'li',\n {\n 'class': {\n 'el-submenu': true,\n 'is-active': active,\n 'is-opened': opened,\n 'is-disabled': disabled\n },\n attrs: { role: 'menuitem',\n 'aria-haspopup': 'true',\n 'aria-expanded': opened\n },\n on: {\n 'mouseenter': this.handleMouseenter,\n 'mouseleave': function mouseleave() {\n return _this5.handleMouseleave(false);\n },\n 'focus': this.handleMouseenter\n }\n },\n [h(\n 'div',\n {\n 'class': 'el-submenu__title',\n ref: 'submenu-title',\n on: {\n 'click': this.handleClick,\n 'mouseenter': this.handleTitleMouseenter,\n 'mouseleave': this.handleTitleMouseleave\n },\n\n style: [paddingStyle, titleStyle, { backgroundColor: backgroundColor }]\n },\n [$slots.title, h('i', { 'class': ['el-submenu__icon-arrow', submenuTitleIcon] })]\n ), this.isMenuPopup ? popupMenu : inlineMenu]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/submenu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_submenuvue_type_script_lang_js_ = (submenuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/submenu.vue\nvar submenu_render, submenu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar submenu_component = normalizeComponent(\n src_submenuvue_type_script_lang_js_,\n submenu_render,\n submenu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var submenu_api; }\nsubmenu_component.options.__file = \"packages/menu/src/submenu.vue\"\n/* harmony default export */ var submenu = (submenu_component.exports);\n// CONCATENATED MODULE: ./packages/submenu/index.js\n\n\n/* istanbul ignore next */\nsubmenu.install = function (Vue) {\n Vue.component(submenu.name, submenu);\n};\n\n/* harmony default export */ var packages_submenu = (submenu);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=template&id=2a5dbfea&\nvar menu_itemvue_type_template_id_2a5dbfea_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"el-menu-item\",\n class: {\n \"is-active\": _vm.active,\n \"is-disabled\": _vm.disabled\n },\n style: [\n _vm.paddingStyle,\n _vm.itemStyle,\n { backgroundColor: _vm.backgroundColor }\n ],\n attrs: { role: \"menuitem\", tabindex: \"-1\" },\n on: {\n click: _vm.handleClick,\n mouseenter: _vm.onMouseEnter,\n focus: _vm.onMouseEnter,\n blur: _vm.onMouseLeave,\n mouseleave: _vm.onMouseLeave\n }\n },\n [\n _vm.parentMenu.$options.componentName === \"ElMenu\" &&\n _vm.rootMenu.collapse &&\n _vm.$slots.title\n ? _c(\"el-tooltip\", { attrs: { effect: \"dark\", placement: \"right\" } }, [\n _c(\n \"div\",\n { attrs: { slot: \"content\" }, slot: \"content\" },\n [_vm._t(\"title\")],\n 2\n ),\n _c(\n \"div\",\n {\n staticStyle: {\n position: \"absolute\",\n left: \"0\",\n top: \"0\",\n height: \"100%\",\n width: \"100%\",\n display: \"inline-block\",\n \"box-sizing\": \"border-box\",\n padding: \"0 20px\"\n }\n },\n [_vm._t(\"default\")],\n 2\n )\n ])\n : [_vm._t(\"default\"), _vm._t(\"title\")]\n ],\n 2\n )\n}\nvar menu_itemvue_type_template_id_2a5dbfea_staticRenderFns = []\nmenu_itemvue_type_template_id_2a5dbfea_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=template&id=2a5dbfea&\n\n// EXTERNAL MODULE: external \"element-ui/lib/tooltip\"\nvar tooltip_ = __webpack_require__(26);\nvar tooltip_default = /*#__PURE__*/__webpack_require__.n(tooltip_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var menu_itemvue_type_script_lang_js_ = ({\n name: 'ElMenuItem',\n\n componentName: 'ElMenuItem',\n\n mixins: [menu_mixin, emitter_default.a],\n\n components: { ElTooltip: tooltip_default.a },\n\n props: {\n index: {\n default: null,\n validator: function validator(val) {\n return typeof val === 'string' || val === null;\n }\n },\n route: [String, Object],\n disabled: Boolean\n },\n computed: {\n active: function active() {\n return this.index === this.rootMenu.activeIndex;\n },\n hoverBackground: function hoverBackground() {\n return this.rootMenu.hoverBackground;\n },\n backgroundColor: function backgroundColor() {\n return this.rootMenu.backgroundColor || '';\n },\n activeTextColor: function activeTextColor() {\n return this.rootMenu.activeTextColor || '';\n },\n textColor: function textColor() {\n return this.rootMenu.textColor || '';\n },\n mode: function mode() {\n return this.rootMenu.mode;\n },\n itemStyle: function itemStyle() {\n var style = {\n color: this.active ? this.activeTextColor : this.textColor\n };\n if (this.mode === 'horizontal' && !this.isNested) {\n style.borderBottomColor = this.active ? this.rootMenu.activeTextColor ? this.activeTextColor : '' : 'transparent';\n }\n return style;\n },\n isNested: function isNested() {\n return this.parentMenu !== this.rootMenu;\n }\n },\n methods: {\n onMouseEnter: function onMouseEnter() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n this.$el.style.backgroundColor = this.hoverBackground;\n },\n onMouseLeave: function onMouseLeave() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n this.$el.style.backgroundColor = this.backgroundColor;\n },\n handleClick: function handleClick() {\n if (!this.disabled) {\n this.dispatch('ElMenu', 'item-click', this);\n this.$emit('click', this);\n }\n }\n },\n mounted: function mounted() {\n this.parentMenu.addItem(this);\n this.rootMenu.addItem(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.parentMenu.removeItem(this);\n this.rootMenu.removeItem(this);\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menu_itemvue_type_script_lang_js_ = (menu_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar menu_item_component = normalizeComponent(\n src_menu_itemvue_type_script_lang_js_,\n menu_itemvue_type_template_id_2a5dbfea_render,\n menu_itemvue_type_template_id_2a5dbfea_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_item_api; }\nmenu_item_component.options.__file = \"packages/menu/src/menu-item.vue\"\n/* harmony default export */ var menu_item = (menu_item_component.exports);\n// CONCATENATED MODULE: ./packages/menu-item/index.js\n\n\n/* istanbul ignore next */\nmenu_item.install = function (Vue) {\n Vue.component(menu_item.name, menu_item);\n};\n\n/* harmony default export */ var packages_menu_item = (menu_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item-group.vue?vue&type=template&id=543b7bdc&\nvar menu_item_groupvue_type_template_id_543b7bdc_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"li\", { staticClass: \"el-menu-item-group\" }, [\n _c(\n \"div\",\n {\n staticClass: \"el-menu-item-group__title\",\n style: { paddingLeft: _vm.levelPadding + \"px\" }\n },\n [!_vm.$slots.title ? [_vm._v(_vm._s(_vm.title))] : _vm._t(\"title\")],\n 2\n ),\n _c(\"ul\", [_vm._t(\"default\")], 2)\n ])\n}\nvar menu_item_groupvue_type_template_id_543b7bdc_staticRenderFns = []\nmenu_item_groupvue_type_template_id_543b7bdc_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue?vue&type=template&id=543b7bdc&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var menu_item_groupvue_type_script_lang_js_ = ({\n name: 'ElMenuItemGroup',\n\n componentName: 'ElMenuItemGroup',\n\n inject: ['rootMenu'],\n props: {\n title: {\n type: String\n }\n },\n data: function data() {\n return {\n paddingLeft: 20\n };\n },\n\n computed: {\n levelPadding: function levelPadding() {\n var padding = 20;\n var parent = this.$parent;\n if (this.rootMenu.collapse) return 20;\n while (parent && parent.$options.componentName !== 'ElMenu') {\n if (parent.$options.componentName === 'ElSubmenu') {\n padding += 20;\n }\n parent = parent.$parent;\n }\n return padding;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menu_item_groupvue_type_script_lang_js_ = (menu_item_groupvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar menu_item_group_component = normalizeComponent(\n src_menu_item_groupvue_type_script_lang_js_,\n menu_item_groupvue_type_template_id_543b7bdc_render,\n menu_item_groupvue_type_template_id_543b7bdc_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_item_group_api; }\nmenu_item_group_component.options.__file = \"packages/menu/src/menu-item-group.vue\"\n/* harmony default export */ var menu_item_group = (menu_item_group_component.exports);\n// CONCATENATED MODULE: ./packages/menu-item-group/index.js\n\n\n/* istanbul ignore next */\nmenu_item_group.install = function (Vue) {\n Vue.component(menu_item_group.name, menu_item_group);\n};\n\n/* harmony default export */ var packages_menu_item_group = (menu_item_group);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=template&id=343dd774&\nvar inputvue_type_template_id_343dd774_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n _vm.type === \"textarea\" ? \"el-textarea\" : \"el-input\",\n _vm.inputSize ? \"el-input--\" + _vm.inputSize : \"\",\n {\n \"is-disabled\": _vm.inputDisabled,\n \"is-exceed\": _vm.inputExceed,\n \"el-input-group\": _vm.$slots.prepend || _vm.$slots.append,\n \"el-input-group--append\": _vm.$slots.append,\n \"el-input-group--prepend\": _vm.$slots.prepend,\n \"el-input--prefix\": _vm.$slots.prefix || _vm.prefixIcon,\n \"el-input--suffix\":\n _vm.$slots.suffix ||\n _vm.suffixIcon ||\n _vm.clearable ||\n _vm.showPassword\n }\n ],\n on: {\n mouseenter: function($event) {\n _vm.hovering = true\n },\n mouseleave: function($event) {\n _vm.hovering = false\n }\n }\n },\n [\n _vm.type !== \"textarea\"\n ? [\n _vm.$slots.prepend\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__prepend\" },\n [_vm._t(\"prepend\")],\n 2\n )\n : _vm._e(),\n _vm.type !== \"textarea\"\n ? _c(\n \"input\",\n _vm._b(\n {\n ref: \"input\",\n staticClass: \"el-input__inner\",\n attrs: {\n tabindex: _vm.tabindex,\n type: _vm.showPassword\n ? _vm.passwordVisible\n ? \"text\"\n : \"password\"\n : _vm.type,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"input\",\n _vm.$attrs,\n false\n )\n )\n : _vm._e(),\n _vm.$slots.prefix || _vm.prefixIcon\n ? _c(\n \"span\",\n { staticClass: \"el-input__prefix\" },\n [\n _vm._t(\"prefix\"),\n _vm.prefixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.prefixIcon\n })\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.getSuffixVisible()\n ? _c(\"span\", { staticClass: \"el-input__suffix\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__suffix-inner\" },\n [\n !_vm.showClear ||\n !_vm.showPwdVisible ||\n !_vm.isWordLimitVisible\n ? [\n _vm._t(\"suffix\"),\n _vm.suffixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.suffixIcon\n })\n : _vm._e()\n ]\n : _vm._e(),\n _vm.showClear\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-circle-close el-input__clear\",\n on: {\n mousedown: function($event) {\n $event.preventDefault()\n },\n click: _vm.clear\n }\n })\n : _vm._e(),\n _vm.showPwdVisible\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-view el-input__clear\",\n on: { click: _vm.handlePasswordVisible }\n })\n : _vm._e(),\n _vm.isWordLimitVisible\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__count-inner\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.textLength) +\n \"/\" +\n _vm._s(_vm.upperLimit) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n ],\n 2\n ),\n _vm.validateState\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: [\"el-input__validateIcon\", _vm.validateIcon]\n })\n : _vm._e()\n ])\n : _vm._e(),\n _vm.$slots.append\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__append\" },\n [_vm._t(\"append\")],\n 2\n )\n : _vm._e()\n ]\n : _c(\n \"textarea\",\n _vm._b(\n {\n ref: \"textarea\",\n staticClass: \"el-textarea__inner\",\n style: _vm.textareaStyle,\n attrs: {\n tabindex: _vm.tabindex,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"textarea\",\n _vm.$attrs,\n false\n )\n ),\n _vm.isWordLimitVisible && _vm.type === \"textarea\"\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _vm._v(_vm._s(_vm.textLength) + \"/\" + _vm._s(_vm.upperLimit))\n ])\n : _vm._e()\n ],\n 2\n )\n}\nvar inputvue_type_template_id_343dd774_staticRenderFns = []\ninputvue_type_template_id_343dd774_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=template&id=343dd774&\n\n// CONCATENATED MODULE: ./packages/input/src/calcTextareaHeight.js\nvar hiddenTextarea = void 0;\n\nvar HIDDEN_STYLE = '\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important\\n';\n\nvar CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\n\nfunction calculateNodeStyling(targetElement) {\n var style = window.getComputedStyle(targetElement);\n\n var boxSizing = style.getPropertyValue('box-sizing');\n\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n\n var contextStyle = CONTEXT_STYLE.map(function (name) {\n return name + ':' + style.getPropertyValue(name);\n }).join(';');\n\n return { contextStyle: contextStyle, paddingSize: paddingSize, borderSize: borderSize, boxSizing: boxSizing };\n}\n\nfunction calcTextareaHeight(targetElement) {\n var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n var _calculateNodeStyling = calculateNodeStyling(targetElement),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n contextStyle = _calculateNodeStyling.contextStyle;\n\n hiddenTextarea.setAttribute('style', contextStyle + ';' + HIDDEN_STYLE);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n var height = hiddenTextarea.scrollHeight;\n var result = {};\n\n if (boxSizing === 'border-box') {\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n height = height - paddingSize;\n }\n\n hiddenTextarea.value = '';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null) {\n var minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = minHeight + 'px';\n }\n if (maxRows !== null) {\n var maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = height + 'px';\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n hiddenTextarea = null;\n return result;\n};\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __webpack_require__(7);\nvar merge_default = /*#__PURE__*/__webpack_require__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __webpack_require__(19);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n/* harmony default export */ var inputvue_type_script_lang_js_ = ({\n name: 'ElInput',\n\n componentName: 'ElInput',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n inheritAttrs: false,\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n textareaCalcStyle: {},\n hovering: false,\n focused: false,\n isComposing: false,\n passwordVisible: false\n };\n },\n\n\n props: {\n value: [String, Number],\n size: String,\n resize: String,\n form: String,\n disabled: Boolean,\n readonly: Boolean,\n type: {\n type: String,\n default: 'text'\n },\n autosize: {\n type: [Boolean, Object],\n default: false\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && false;\n return true;\n }\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n suffixIcon: String,\n prefixIcon: String,\n label: String,\n clearable: {\n type: Boolean,\n default: false\n },\n showPassword: {\n type: Boolean,\n default: false\n },\n showWordLimit: {\n type: Boolean,\n default: false\n },\n tabindex: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n validateState: function validateState() {\n return this.elFormItem ? this.elFormItem.validateState : '';\n },\n needStatusIcon: function needStatusIcon() {\n return this.elForm ? this.elForm.statusIcon : false;\n },\n validateIcon: function validateIcon() {\n return {\n validating: 'el-icon-loading',\n success: 'el-icon-circle-check',\n error: 'el-icon-circle-close'\n }[this.validateState];\n },\n textareaStyle: function textareaStyle() {\n return merge_default()({}, this.textareaCalcStyle, { resize: this.resize });\n },\n inputSize: function inputSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputDisabled: function inputDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n nativeInputValue: function nativeInputValue() {\n return this.value === null || this.value === undefined ? '' : String(this.value);\n },\n showClear: function showClear() {\n return this.clearable && !this.inputDisabled && !this.readonly && this.nativeInputValue && (this.focused || this.hovering);\n },\n showPwdVisible: function showPwdVisible() {\n return this.showPassword && !this.inputDisabled && !this.readonly && (!!this.nativeInputValue || this.focused);\n },\n isWordLimitVisible: function isWordLimitVisible() {\n return this.showWordLimit && this.$attrs.maxlength && (this.type === 'text' || this.type === 'textarea') && !this.inputDisabled && !this.readonly && !this.showPassword;\n },\n upperLimit: function upperLimit() {\n return this.$attrs.maxlength;\n },\n textLength: function textLength() {\n if (typeof this.value === 'number') {\n return String(this.value).length;\n }\n\n return (this.value || '').length;\n },\n inputExceed: function inputExceed() {\n // show exceed style if length of initial value greater then maxlength\n return this.isWordLimitVisible && this.textLength > this.upperLimit;\n }\n },\n\n watch: {\n value: function value(val) {\n this.$nextTick(this.resizeTextarea);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', [val]);\n }\n },\n\n // native input value is set explicitly\n // do not use v-model / :value in template\n // see: https://github.com/ElemeFE/element/issues/14521\n nativeInputValue: function nativeInputValue() {\n this.setNativeInputValue();\n },\n\n // when change between and